<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>IgH EtherCAT Master: master.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
  $(document).ready(initResizable);
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">IgH EtherCAT Master
   &#160;<span id="projectnumber">1.5.2</span>
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
  initMenu('',false,false,'search.php','Search');
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('master_8h_source.html','');});
</script>
<div id="doc-content">
<div class="header">
  <div class="headertitle">
<div class="title">master.h</div>  </div>
</div><!--header-->
<div class="contents">
<a href="master_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="comment">/******************************************************************************</span></div><div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;<span class="comment"> *  $Id: master.h,v ec403cf308eb 2013/02/12 14:46:43 fp $</span></div><div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<span class="comment"> *  Copyright (C) 2006-2012  Florian Pose, Ingenieurgemeinschaft IgH</span></div><div class="line"><a name="l00006"></a><span class="lineno">    6</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<span class="comment"> *  This file is part of the IgH EtherCAT Master.</span></div><div class="line"><a name="l00008"></a><span class="lineno">    8</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<span class="comment"> *  The IgH EtherCAT Master is free software; you can redistribute it and/or</span></div><div class="line"><a name="l00010"></a><span class="lineno">   10</span>&#160;<span class="comment"> *  modify it under the terms of the GNU General Public License version 2, as</span></div><div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<span class="comment"> *  published by the Free Software Foundation.</span></div><div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<span class="comment"> *  The IgH EtherCAT Master is distributed in the hope that it will be useful,</span></div><div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="comment"> *  but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div><div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;<span class="comment"> *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General</span></div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;<span class="comment"> *  Public License for more details.</span></div><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="comment"> *  You should have received a copy of the GNU General Public License along</span></div><div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;<span class="comment"> *  with the IgH EtherCAT Master; if not, write to the Free Software</span></div><div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;<span class="comment"> *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA</span></div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;<span class="comment"> *  ---</span></div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;<span class="comment"> *  The license mentioned above concerns the source code only. Using the</span></div><div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;<span class="comment"> *  EtherCAT technology and brand is only permitted in compliance with the</span></div><div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;<span class="comment"> *  industrial property and similar rights of Beckhoff Automation GmbH.</span></div><div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;<span class="comment"> *****************************************************************************/</span></div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;</div><div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;<span class="comment">/*****************************************************************************/</span></div><div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;</div><div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;<span class="preprocessor">#ifndef __EC_MASTER_H__</span></div><div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;<span class="preprocessor">#define __EC_MASTER_H__</span></div><div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;</div><div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;<span class="preprocessor">#include &lt;linux/version.h&gt;</span></div><div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;<span class="preprocessor">#include &lt;linux/list.h&gt;</span></div><div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;<span class="preprocessor">#include &lt;linux/timer.h&gt;</span></div><div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;<span class="preprocessor">#include &lt;linux/wait.h&gt;</span></div><div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;<span class="preprocessor">#include &lt;linux/kthread.h&gt;</span></div><div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;</div><div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;<span class="preprocessor">#if LINUX_VERSION_CODE &gt;= KERNEL_VERSION(2, 6, 27)</span></div><div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;<span class="preprocessor">#include &lt;linux/semaphore.h&gt;</span></div><div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;<span class="preprocessor">#include &lt;asm/semaphore.h&gt;</span></div><div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;</div><div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="device_8h.html">device.h</a>&quot;</span></div><div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="domain_8h.html">domain.h</a>&quot;</span></div><div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="ethernet_8h.html">ethernet.h</a>&quot;</span></div><div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="fsm__master_8h.html">fsm_master.h</a>&quot;</span></div><div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="cdev_8h.html">cdev.h</a>&quot;</span></div><div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;</div><div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;<span class="preprocessor">#ifdef EC_RTDM</span></div><div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="rtdm_8h.html">rtdm.h</a>&quot;</span></div><div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;</div><div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;<span class="comment">/*****************************************************************************/</span></div><div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;</div><div class="line"><a name="l00073"></a><span class="lineno"><a class="line" href="master_8h.html#a306a2bcfad973302ae507c9c6978b816">   73</a></span>&#160;<span class="preprocessor">#define EC_MASTER_INFO(master, fmt, args...) \</span></div><div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;<span class="preprocessor">    printk(KERN_INFO &quot;EtherCAT %u: &quot; fmt, master-&gt;index, ##args)</span></div><div class="line"><a name="l00075"></a><span class="lineno">   75</span>&#160;</div><div class="line"><a name="l00085"></a><span class="lineno"><a class="line" href="master_8h.html#aece1fb7ea6af168ba7513c9d7b0a523a">   85</a></span>&#160;<span class="preprocessor">#define EC_MASTER_ERR(master, fmt, args...) \</span></div><div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;<span class="preprocessor">    printk(KERN_ERR &quot;EtherCAT ERROR %u: &quot; fmt, master-&gt;index, ##args)</span></div><div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;</div><div class="line"><a name="l00097"></a><span class="lineno"><a class="line" href="master_8h.html#af75617c47fe87f4f60e8593d7e79dbc0">   97</a></span>&#160;<span class="preprocessor">#define EC_MASTER_WARN(master, fmt, args...) \</span></div><div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160;<span class="preprocessor">    printk(KERN_WARNING &quot;EtherCAT WARNING %u: &quot; fmt, master-&gt;index, ##args)</span></div><div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;</div><div class="line"><a name="l00111"></a><span class="lineno"><a class="line" href="master_8h.html#a6cc0dea5aa374291f2379e844de741d0">  111</a></span>&#160;<span class="preprocessor">#define EC_MASTER_DBG(master, level, fmt, args...) \</span></div><div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;<span class="preprocessor">    do { \</span></div><div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;<span class="preprocessor">        if (master-&gt;debug_level &gt;= level) { \</span></div><div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160;<span class="preprocessor">            printk(KERN_DEBUG &quot;EtherCAT DEBUG %u: &quot; fmt, \</span></div><div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160;<span class="preprocessor">                    master-&gt;index, ##args); \</span></div><div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;<span class="preprocessor">        } \</span></div><div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;<span class="preprocessor">    } while (0)</span></div><div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160;</div><div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;</div><div class="line"><a name="l00124"></a><span class="lineno"><a class="line" href="master_8h.html#a82682f338d4c64728c4bc14543eb6b9e">  124</a></span>&#160;<span class="preprocessor">#define EC_EXT_RING_SIZE 32</span></div><div class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160;</div><div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160;<span class="comment">/*****************************************************************************/</span></div><div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;</div><div class="line"><a name="l00130"></a><span class="lineno"><a class="line" href="master_8h.html#aebcf0998049ecde580a47832fb3b36f0">  130</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">enum</span> {</div><div class="line"><a name="l00131"></a><span class="lineno"><a class="line" href="master_8h.html#aebcf0998049ecde580a47832fb3b36f0aa9cb1938a13b1bfc35b02646310efe8f">  131</a></span>&#160;    <a class="code" href="master_8h.html#aebcf0998049ecde580a47832fb3b36f0aa9cb1938a13b1bfc35b02646310efe8f">EC_ORPHANED</a>, </div><div class="line"><a name="l00133"></a><span class="lineno"><a class="line" href="master_8h.html#aebcf0998049ecde580a47832fb3b36f0a243c4f44013cdfedb1105cb13e6b1191">  133</a></span>&#160;    <a class="code" href="master_8h.html#aebcf0998049ecde580a47832fb3b36f0a243c4f44013cdfedb1105cb13e6b1191">EC_IDLE</a>, </div><div class="line"><a name="l00135"></a><span class="lineno"><a class="line" href="master_8h.html#aebcf0998049ecde580a47832fb3b36f0aadf62d83c5d61ea4fda76f5676aeb0c4">  135</a></span>&#160;    <a class="code" href="master_8h.html#aebcf0998049ecde580a47832fb3b36f0aadf62d83c5d61ea4fda76f5676aeb0c4">EC_OPERATION</a> </div><div class="line"><a name="l00137"></a><span class="lineno">  137</span>&#160;} <a class="code" href="master_8h.html#aebcf0998049ecde580a47832fb3b36f0">ec_master_phase_t</a>;</div><div class="line"><a name="l00138"></a><span class="lineno">  138</span>&#160;</div><div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160;<span class="comment">/*****************************************************************************/</span></div><div class="line"><a name="l00140"></a><span class="lineno">  140</span>&#160;</div><div class="line"><a name="l00143"></a><span class="lineno"><a class="line" href="structec__stats__t.html">  143</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span>{</div><div class="line"><a name="l00144"></a><span class="lineno"><a class="line" href="structec__stats__t.html#a955d4a4b543d39ef33e3be00b7035551">  144</a></span>&#160;    <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="structec__stats__t.html#a955d4a4b543d39ef33e3be00b7035551">timeouts</a>; </div><div class="line"><a name="l00145"></a><span class="lineno"><a class="line" href="structec__stats__t.html#a05d3aa920802468a437e8518d84b5b4c">  145</a></span>&#160;    <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="structec__stats__t.html#a05d3aa920802468a437e8518d84b5b4c">corrupted</a>; </div><div class="line"><a name="l00146"></a><span class="lineno"><a class="line" href="structec__stats__t.html#ace86973203e2ef1838f9345f9eb2d767">  146</a></span>&#160;    <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="structec__stats__t.html#ace86973203e2ef1838f9345f9eb2d767">unmatched</a>; </div><div class="line"><a name="l00148"></a><span class="lineno"><a class="line" href="structec__stats__t.html#a1b5236e09088fa71c8bdc73b4f9de70a">  148</a></span>&#160;    <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <a class="code" href="structec__stats__t.html#a1b5236e09088fa71c8bdc73b4f9de70a">output_jiffies</a>; </div><div class="line"><a name="l00149"></a><span class="lineno">  149</span>&#160;} <a class="code" href="structec__stats__t.html">ec_stats_t</a>;</div><div class="line"><a name="l00150"></a><span class="lineno">  150</span>&#160;</div><div class="line"><a name="l00151"></a><span class="lineno">  151</span>&#160;<span class="comment">/*****************************************************************************/</span></div><div class="line"><a name="l00152"></a><span class="lineno">  152</span>&#160;</div><div class="line"><a name="l00155"></a><span class="lineno"><a class="line" href="structec__device__stats__t.html">  155</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span>{</div><div class="line"><a name="l00156"></a><span class="lineno"><a class="line" href="structec__device__stats__t.html#a712dc5c0b9652b59fe8dfda4cd5cb0fe">  156</a></span>&#160;    u64 <a class="code" href="structec__device__stats__t.html#a712dc5c0b9652b59fe8dfda4cd5cb0fe">tx_count</a>; </div><div class="line"><a name="l00157"></a><span class="lineno"><a class="line" href="structec__device__stats__t.html#ab7ad452fd25c6e0470249165d8b5757f">  157</a></span>&#160;    u64 <a class="code" href="structec__device__stats__t.html#ab7ad452fd25c6e0470249165d8b5757f">last_tx_count</a>; </div><div class="line"><a name="l00158"></a><span class="lineno"><a class="line" href="structec__device__stats__t.html#aca29f0a6107eab8e7438ea53078183af">  158</a></span>&#160;    u64 <a class="code" href="structec__device__stats__t.html#aca29f0a6107eab8e7438ea53078183af">rx_count</a>; </div><div class="line"><a name="l00159"></a><span class="lineno"><a class="line" href="structec__device__stats__t.html#af7e4fc7bfa8d67523c5e4f49b3953280">  159</a></span>&#160;    u64 <a class="code" href="structec__device__stats__t.html#af7e4fc7bfa8d67523c5e4f49b3953280">last_rx_count</a>; </div><div class="line"><a name="l00161"></a><span class="lineno"><a class="line" href="structec__device__stats__t.html#ac4bcb52ad4f765671ffe124f4019b370">  161</a></span>&#160;    u64 <a class="code" href="structec__device__stats__t.html#ac4bcb52ad4f765671ffe124f4019b370">tx_bytes</a>; </div><div class="line"><a name="l00162"></a><span class="lineno"><a class="line" href="structec__device__stats__t.html#ab4d135010f4b8200a252f02429bd4160">  162</a></span>&#160;    u64 <a class="code" href="structec__device__stats__t.html#ab4d135010f4b8200a252f02429bd4160">last_tx_bytes</a>; </div><div class="line"><a name="l00163"></a><span class="lineno"><a class="line" href="structec__device__stats__t.html#a7aa4d7f1b8804dfd50d0b6caef15de9f">  163</a></span>&#160;    u64 <a class="code" href="structec__device__stats__t.html#a7aa4d7f1b8804dfd50d0b6caef15de9f">rx_bytes</a>; </div><div class="line"><a name="l00164"></a><span class="lineno"><a class="line" href="structec__device__stats__t.html#af577e001b9fa7ca11696eb99e4dc1c94">  164</a></span>&#160;    u64 <a class="code" href="structec__device__stats__t.html#af577e001b9fa7ca11696eb99e4dc1c94">last_rx_bytes</a>; </div><div class="line"><a name="l00166"></a><span class="lineno"><a class="line" href="structec__device__stats__t.html#a9cb31cea1af324f2a46ece82690027c7">  166</a></span>&#160;    u64 <a class="code" href="structec__device__stats__t.html#a9cb31cea1af324f2a46ece82690027c7">last_loss</a>; </div><div class="line"><a name="l00167"></a><span class="lineno"><a class="line" href="structec__device__stats__t.html#ae7ca9495a2d4254d7cb87655a1e5ea64">  167</a></span>&#160;    s32 tx_frame_rates[<a class="code" href="globals_8h.html#a00b477d166c2d09b9fea5d43c0c1cd48">EC_RATE_COUNT</a>]; </div><div class="line"><a name="l00170"></a><span class="lineno"><a class="line" href="structec__device__stats__t.html#a71c364775c6e39faf856d6569f4ac384">  170</a></span>&#160;    s32 rx_frame_rates[<a class="code" href="globals_8h.html#a00b477d166c2d09b9fea5d43c0c1cd48">EC_RATE_COUNT</a>]; </div><div class="line"><a name="l00173"></a><span class="lineno"><a class="line" href="structec__device__stats__t.html#ac12aa6100b6c79d8c25f38d6c163bd3e">  173</a></span>&#160;    s32 tx_byte_rates[<a class="code" href="globals_8h.html#a00b477d166c2d09b9fea5d43c0c1cd48">EC_RATE_COUNT</a>]; </div><div class="line"><a name="l00175"></a><span class="lineno"><a class="line" href="structec__device__stats__t.html#a2f9e55c67c34fec5e5d67230598b80d1">  175</a></span>&#160;    s32 rx_byte_rates[<a class="code" href="globals_8h.html#a00b477d166c2d09b9fea5d43c0c1cd48">EC_RATE_COUNT</a>]; </div><div class="line"><a name="l00177"></a><span class="lineno"><a class="line" href="structec__device__stats__t.html#a3dfa4926b342dd6567647b5a368f224a">  177</a></span>&#160;    s32 loss_rates[<a class="code" href="globals_8h.html#a00b477d166c2d09b9fea5d43c0c1cd48">EC_RATE_COUNT</a>]; </div><div class="line"><a name="l00179"></a><span class="lineno"><a class="line" href="structec__device__stats__t.html#afd23f1645bfbf7a505dc4e8b5ac5eca0">  179</a></span>&#160;    <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <a class="code" href="structec__device__stats__t.html#afd23f1645bfbf7a505dc4e8b5ac5eca0">jiffies</a>; </div><div class="line"><a name="l00180"></a><span class="lineno">  180</span>&#160;} <a class="code" href="structec__device__stats__t.html">ec_device_stats_t</a>;</div><div class="line"><a name="l00181"></a><span class="lineno">  181</span>&#160;</div><div class="line"><a name="l00182"></a><span class="lineno">  182</span>&#160;<span class="comment">/*****************************************************************************/</span></div><div class="line"><a name="l00183"></a><span class="lineno">  183</span>&#160;</div><div class="line"><a name="l00184"></a><span class="lineno">  184</span>&#160;<span class="preprocessor">#if EC_MAX_NUM_DEVICES &lt; 1</span></div><div class="line"><a name="l00185"></a><span class="lineno">  185</span>&#160;<span class="preprocessor">#error Invalid number of devices</span></div><div class="line"><a name="l00186"></a><span class="lineno">  186</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00187"></a><span class="lineno">  187</span>&#160;</div><div class="line"><a name="l00188"></a><span class="lineno">  188</span>&#160;<span class="comment">/*****************************************************************************/</span></div><div class="line"><a name="l00189"></a><span class="lineno">  189</span>&#160;</div><div class="line"><a name="l00194"></a><span class="lineno"><a class="line" href="structec__master.html">  194</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structec__master.html">ec_master</a> {</div><div class="line"><a name="l00195"></a><span class="lineno"><a class="line" href="structec__master.html#a78fe13519ced082c9a212711bec49ed3">  195</a></span>&#160;    <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="structec__master.html#a78fe13519ced082c9a212711bec49ed3">index</a>; </div><div class="line"><a name="l00196"></a><span class="lineno"><a class="line" href="structec__master.html#ace80d85886a06d3608f853a7b37fb8c9">  196</a></span>&#160;    <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="structec__master.html#ace80d85886a06d3608f853a7b37fb8c9">reserved</a>; </div><div class="line"><a name="l00198"></a><span class="lineno"><a class="line" href="structec__master.html#acbd6e49f052bce75f69d12ef93390e5b">  198</a></span>&#160;    <a class="code" href="structec__cdev__t.html">ec_cdev_t</a> <a class="code" href="structec__master.html#acbd6e49f052bce75f69d12ef93390e5b">cdev</a>; </div><div class="line"><a name="l00199"></a><span class="lineno">  199</span>&#160;<span class="preprocessor">#if LINUX_VERSION_CODE &gt;= KERNEL_VERSION(2, 6, 26)</span></div><div class="line"><a name="l00200"></a><span class="lineno"><a class="line" href="structec__master.html#ac5b8f1b9b9bc4beb08c6be854490841e">  200</a></span>&#160;    <span class="keyword">struct </span>device *<a class="code" href="structec__master.html#ac5b8f1b9b9bc4beb08c6be854490841e">class_device</a>; </div><div class="line"><a name="l00201"></a><span class="lineno">  201</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l00202"></a><span class="lineno">  202</span>&#160;    <span class="keyword">struct </span>class_device *class_device; </div><div class="line"><a name="l00203"></a><span class="lineno">  203</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00204"></a><span class="lineno">  204</span>&#160;</div><div class="line"><a name="l00205"></a><span class="lineno">  205</span>&#160;<span class="preprocessor">#ifdef EC_RTDM</span></div><div class="line"><a name="l00206"></a><span class="lineno">  206</span>&#160;    <a class="code" href="structec__rtdm__dev.html">ec_rtdm_dev_t</a> rtdm_dev; </div><div class="line"><a name="l00207"></a><span class="lineno">  207</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00208"></a><span class="lineno">  208</span>&#160;</div><div class="line"><a name="l00209"></a><span class="lineno"><a class="line" href="structec__master.html#a322cd94f85808c07a046501df8308cc6">  209</a></span>&#160;    <span class="keyword">struct </span>semaphore <a class="code" href="module_8c.html#adaf55d5f5a414db259c65bbad33c1d6a">master_sem</a>; </div><div class="line"><a name="l00211"></a><span class="lineno"><a class="line" href="structec__master.html#af339cc3b68bceb8ce25b02f4d8b5891b">  211</a></span>&#160;    <a class="code" href="structec__device.html">ec_device_t</a> devices[EC_MAX_NUM_DEVICES]; </div><div class="line"><a name="l00212"></a><span class="lineno"><a class="line" href="structec__master.html#ae06cfb9422989fbdcce9e17242aeeaa4">  212</a></span>&#160;    <span class="keyword">const</span> uint8_t *<a class="code" href="module_8c.html#a93e568278eb7135eddee0827c5c7eb69">macs</a>[EC_MAX_NUM_DEVICES]; </div><div class="line"><a name="l00213"></a><span class="lineno">  213</span>&#160;<span class="preprocessor">#if EC_MAX_NUM_DEVICES &gt; 1</span></div><div class="line"><a name="l00214"></a><span class="lineno">  214</span>&#160;    <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> num_devices; </div><div class="line"><a name="l00217"></a><span class="lineno">  217</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00218"></a><span class="lineno"><a class="line" href="structec__master.html#acbd28a1ea76d9b758e53a987b18a59c7">  218</a></span>&#160;    <span class="keyword">struct </span>semaphore device_sem; </div><div class="line"><a name="l00219"></a><span class="lineno"><a class="line" href="structec__master.html#a8109992ca98fdfc4d97610ec699fec31">  219</a></span>&#160;    <a class="code" href="structec__device__stats__t.html">ec_device_stats_t</a> <a class="code" href="structec__master.html#a8109992ca98fdfc4d97610ec699fec31">device_stats</a>; </div><div class="line"><a name="l00221"></a><span class="lineno"><a class="line" href="structec__master.html#a49062aab725bb4953a8fb6ad0fcabd85">  221</a></span>&#160;    <a class="code" href="structec__fsm__master.html">ec_fsm_master_t</a> <a class="code" href="structec__master.html#a49062aab725bb4953a8fb6ad0fcabd85">fsm</a>; </div><div class="line"><a name="l00222"></a><span class="lineno"><a class="line" href="structec__master.html#a2f17ac41646829e59c60426847a14425">  222</a></span>&#160;    <a class="code" href="structec__datagram__t.html">ec_datagram_t</a> <a class="code" href="structec__master.html#a2f17ac41646829e59c60426847a14425">fsm_datagram</a>; </div><div class="line"><a name="l00223"></a><span class="lineno"><a class="line" href="structec__master.html#aeeac95bdfc711903f48710b31e8b78a2">  223</a></span>&#160;    <a class="code" href="master_8h.html#aebcf0998049ecde580a47832fb3b36f0">ec_master_phase_t</a> <a class="code" href="structec__master.html#aeeac95bdfc711903f48710b31e8b78a2">phase</a>; </div><div class="line"><a name="l00224"></a><span class="lineno"><a class="line" href="structec__master.html#abca51c185472a028ee9a541f6c375d1b">  224</a></span>&#160;    <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="structec__master.html#abca51c185472a028ee9a541f6c375d1b">active</a>; </div><div class="line"><a name="l00225"></a><span class="lineno"><a class="line" href="structec__master.html#ad505951b836d6c8a92549be0a8506aa0">  225</a></span>&#160;    <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="structec__master.html#ad505951b836d6c8a92549be0a8506aa0">config_changed</a>; </div><div class="line"><a name="l00226"></a><span class="lineno"><a class="line" href="structec__master.html#a196088421f83927659e8c492f0432374">  226</a></span>&#160;    <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="structec__master.html#a196088421f83927659e8c492f0432374">injection_seq_fsm</a>; </div><div class="line"><a name="l00228"></a><span class="lineno"><a class="line" href="structec__master.html#aa2badb7a9897d61488b4f08e58eb510c">  228</a></span>&#160;    <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="structec__master.html#aa2badb7a9897d61488b4f08e58eb510c">injection_seq_rt</a>; </div><div class="line"><a name="l00231"></a><span class="lineno"><a class="line" href="structec__master.html#abc8bc52f09996b03c605c0c1d2e6327a">  231</a></span>&#160;    <a class="code" href="structec__slave.html">ec_slave_t</a> *<a class="code" href="structec__master.html#abc8bc52f09996b03c605c0c1d2e6327a">slaves</a>; </div><div class="line"><a name="l00232"></a><span class="lineno"><a class="line" href="structec__master.html#a664524e036971936aa812b73c51dc88d">  232</a></span>&#160;    <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="structec__master.html#a664524e036971936aa812b73c51dc88d">slave_count</a>; </div><div class="line"><a name="l00234"></a><span class="lineno">  234</span>&#160;    <span class="comment">/* Configuration applied by the application. */</span></div><div class="line"><a name="l00235"></a><span class="lineno"><a class="line" href="structec__master.html#ada6ef60acc0c19ab234472282fa3ef06">  235</a></span>&#160;    <span class="keyword">struct </span>list_head configs; </div><div class="line"><a name="l00236"></a><span class="lineno"><a class="line" href="structec__master.html#a8d9bf2d9c43ac4724f13cb6a2fd34ab0">  236</a></span>&#160;    <span class="keyword">struct </span>list_head domains; </div><div class="line"><a name="l00238"></a><span class="lineno"><a class="line" href="structec__master.html#a499bcb3d75277ce4415f6df3de21b7d0">  238</a></span>&#160;    u64 <a class="code" href="structec__master.html#a499bcb3d75277ce4415f6df3de21b7d0">app_time</a>; </div><div class="line"><a name="l00239"></a><span class="lineno"><a class="line" href="structec__master.html#a76d60bf657e362358ef24cb56e12771a">  239</a></span>&#160;    u64 <a class="code" href="structec__master.html#a76d60bf657e362358ef24cb56e12771a">app_start_time</a>; </div><div class="line"><a name="l00240"></a><span class="lineno"><a class="line" href="structec__master.html#aafac97e86bc13e578d3ff0030c8ce7eb">  240</a></span>&#160;    u8 <a class="code" href="structec__master.html#aafac97e86bc13e578d3ff0030c8ce7eb">has_app_time</a>; </div><div class="line"><a name="l00241"></a><span class="lineno"><a class="line" href="structec__master.html#a8cb95984916798bb54e829452d069f50">  241</a></span>&#160;    <a class="code" href="structec__datagram__t.html">ec_datagram_t</a> <a class="code" href="structec__master.html#a8cb95984916798bb54e829452d069f50">ref_sync_datagram</a>; </div><div class="line"><a name="l00243"></a><span class="lineno"><a class="line" href="structec__master.html#a34e475677b9513fba43fb615e1928fdc">  243</a></span>&#160;    <a class="code" href="structec__datagram__t.html">ec_datagram_t</a> <a class="code" href="structec__master.html#a34e475677b9513fba43fb615e1928fdc">sync_datagram</a>; </div><div class="line"><a name="l00245"></a><span class="lineno"><a class="line" href="structec__master.html#ab80e6b1c25a8818e7959aedcbe99e8aa">  245</a></span>&#160;    <a class="code" href="structec__datagram__t.html">ec_datagram_t</a> <a class="code" href="structec__master.html#ab80e6b1c25a8818e7959aedcbe99e8aa">sync_mon_datagram</a>; </div><div class="line"><a name="l00247"></a><span class="lineno"><a class="line" href="structec__master.html#ac4017bf50536c4aef75cfbbc97cf5c1f">  247</a></span>&#160;    <a class="code" href="structec__slave__config.html">ec_slave_config_t</a> *<a class="code" href="structec__master.html#ac4017bf50536c4aef75cfbbc97cf5c1f">dc_ref_config</a>; </div><div class="line"><a name="l00249"></a><span class="lineno"><a class="line" href="structec__master.html#a8bce8836632ebb3a467480e4ea80b897">  249</a></span>&#160;    <a class="code" href="structec__slave.html">ec_slave_t</a> *<a class="code" href="structec__master.html#a8bce8836632ebb3a467480e4ea80b897">dc_ref_clock</a>; </div><div class="line"><a name="l00251"></a><span class="lineno"><a class="line" href="structec__master.html#a51de6aed4f6ef7b4d876083d778e7267">  251</a></span>&#160;    <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="structec__master.html#a51de6aed4f6ef7b4d876083d778e7267">scan_busy</a>; </div><div class="line"><a name="l00252"></a><span class="lineno"><a class="line" href="structec__master.html#ad09f588b08a5271c5c6a5e2b303f2f20">  252</a></span>&#160;    <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="structec__master.html#ad09f588b08a5271c5c6a5e2b303f2f20">allow_scan</a>; </div><div class="line"><a name="l00253"></a><span class="lineno"><a class="line" href="structec__master.html#ab5b094c742e650a1a691e9e4d5499185">  253</a></span>&#160;    <span class="keyword">struct </span>semaphore scan_sem; </div><div class="line"><a name="l00255"></a><span class="lineno"><a class="line" href="structec__master.html#a4a38824373201b174f0ffa3141eca8a1">  255</a></span>&#160;    wait_queue_head_t <a class="code" href="structec__master.html#a4a38824373201b174f0ffa3141eca8a1">scan_queue</a>; </div><div class="line"><a name="l00258"></a><span class="lineno"><a class="line" href="structec__master.html#a89d9f24a4ffd7e41597449038bb39edc">  258</a></span>&#160;    <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="structec__master.html#a89d9f24a4ffd7e41597449038bb39edc">config_busy</a>; </div><div class="line"><a name="l00259"></a><span class="lineno"><a class="line" href="structec__master.html#a910d06d8a5b7dbe785bdd361181151ae">  259</a></span>&#160;    <span class="keyword">struct </span>semaphore config_sem; </div><div class="line"><a name="l00261"></a><span class="lineno"><a class="line" href="structec__master.html#ab23c49dc46246de0e9d0b6247d4773fc">  261</a></span>&#160;    wait_queue_head_t <a class="code" href="structec__master.html#ab23c49dc46246de0e9d0b6247d4773fc">config_queue</a>; </div><div class="line"><a name="l00264"></a><span class="lineno"><a class="line" href="structec__master.html#a00814132ac132469cbf6af632cc065c5">  264</a></span>&#160;    <span class="keyword">struct </span>list_head datagram_queue; </div><div class="line"><a name="l00265"></a><span class="lineno"><a class="line" href="structec__master.html#a78f6e9a626268ed4747495077e9e704d">  265</a></span>&#160;    uint8_t <a class="code" href="structec__master.html#a78f6e9a626268ed4747495077e9e704d">datagram_index</a>; </div><div class="line"><a name="l00267"></a><span class="lineno"><a class="line" href="structec__master.html#a32a5c6ffb12850305eca759c70089ed7">  267</a></span>&#160;    <span class="keyword">struct </span>list_head ext_datagram_queue; </div><div class="line"><a name="l00269"></a><span class="lineno"><a class="line" href="structec__master.html#af8b2cc465cf630bb51916a4637545d95">  269</a></span>&#160;    <span class="keyword">struct </span>semaphore ext_queue_sem; </div><div class="line"><a name="l00272"></a><span class="lineno"><a class="line" href="structec__master.html#ae8207eec28c8add322f0766a1941c678">  272</a></span>&#160;    <a class="code" href="structec__datagram__t.html">ec_datagram_t</a> ext_datagram_ring[<a class="code" href="master_8h.html#a82682f338d4c64728c4bc14543eb6b9e">EC_EXT_RING_SIZE</a>]; </div><div class="line"><a name="l00274"></a><span class="lineno"><a class="line" href="structec__master.html#abde2d964e984e4874e200a025deb2d20">  274</a></span>&#160;    <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="structec__master.html#abde2d964e984e4874e200a025deb2d20">ext_ring_idx_rt</a>; </div><div class="line"><a name="l00276"></a><span class="lineno"><a class="line" href="structec__master.html#a7c216ddb4024fb15599e14d337b38cab">  276</a></span>&#160;    <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="structec__master.html#a7c216ddb4024fb15599e14d337b38cab">ext_ring_idx_fsm</a>; </div><div class="line"><a name="l00278"></a><span class="lineno"><a class="line" href="structec__master.html#a5f4ea791c6e6c52f636b3888e70c9da3">  278</a></span>&#160;    <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="structec__master.html#a5f4ea791c6e6c52f636b3888e70c9da3">send_interval</a>; </div><div class="line"><a name="l00280"></a><span class="lineno"><a class="line" href="structec__master.html#a39b81f27a225b9b10daf88b1746d0d6d">  280</a></span>&#160;    <span class="keywordtype">size_t</span> <a class="code" href="structec__master.html#a39b81f27a225b9b10daf88b1746d0d6d">max_queue_size</a>; </div><div class="line"><a name="l00282"></a><span class="lineno"><a class="line" href="structec__master.html#a9e65179b1519a5c1e7ff229e428501d0">  282</a></span>&#160;    <a class="code" href="structec__slave.html">ec_slave_t</a> *<a class="code" href="structec__master.html#a9e65179b1519a5c1e7ff229e428501d0">fsm_slave</a>; </div><div class="line"><a name="l00283"></a><span class="lineno"><a class="line" href="structec__master.html#a44b44a92fdb968e9e7cff3a210801393">  283</a></span>&#160;    <span class="keyword">struct </span>list_head fsm_exec_list; </div><div class="line"><a name="l00284"></a><span class="lineno"><a class="line" href="structec__master.html#a917c398a16d659c77249f4c77fde6dad">  284</a></span>&#160;    <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="structec__master.html#a917c398a16d659c77249f4c77fde6dad">fsm_exec_count</a>; </div><div class="line"><a name="l00286"></a><span class="lineno"><a class="line" href="structec__master.html#abdecf290f3f7f2af1b2a7bf0d9c7b08d">  286</a></span>&#160;    <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="structec__master.html#abdecf290f3f7f2af1b2a7bf0d9c7b08d">debug_level</a>; </div><div class="line"><a name="l00287"></a><span class="lineno"><a class="line" href="structec__master.html#ac10793455069c82bd9c459a596f9a38f">  287</a></span>&#160;    <a class="code" href="structec__stats__t.html">ec_stats_t</a> <a class="code" href="structec__master.html#ac10793455069c82bd9c459a596f9a38f">stats</a>; </div><div class="line"><a name="l00289"></a><span class="lineno"><a class="line" href="structec__master.html#a20064971533f5ff3e72933c7c19bad18">  289</a></span>&#160;    <span class="keyword">struct </span>task_struct *<a class="code" href="structec__master.html#a20064971533f5ff3e72933c7c19bad18">thread</a>; </div><div class="line"><a name="l00291"></a><span class="lineno">  291</span>&#160;<span class="preprocessor">#ifdef EC_EOE</span></div><div class="line"><a name="l00292"></a><span class="lineno"><a class="line" href="structec__master.html#a06e3b89f4c10b690f95a9bdac24eb94a">  292</a></span>&#160;    <span class="keyword">struct </span>task_struct *<a class="code" href="structec__master.html#a06e3b89f4c10b690f95a9bdac24eb94a">eoe_thread</a>; </div><div class="line"><a name="l00293"></a><span class="lineno"><a class="line" href="structec__master.html#a2758ca69c680c4f5a413820f4ed4cdf7">  293</a></span>&#160;    <span class="keyword">struct </span>list_head eoe_handlers; </div><div class="line"><a name="l00294"></a><span class="lineno">  294</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00295"></a><span class="lineno">  295</span>&#160;</div><div class="line"><a name="l00296"></a><span class="lineno"><a class="line" href="structec__master.html#a4fb65657efce9d74dae090cd3dd5fba5">  296</a></span>&#160;    <span class="keyword">struct </span>semaphore io_sem; </div><div class="line"><a name="l00298"></a><span class="lineno"><a class="line" href="structec__master.html#a81a6d63239d0b89907771f1a2dd27e5d">  298</a></span>&#160;    void (*send_cb)(<span class="keywordtype">void</span> *); </div><div class="line"><a name="l00299"></a><span class="lineno"><a class="line" href="structec__master.html#a77c9e440c6cfdc87a74ec9a15d6e9e61">  299</a></span>&#160;    void (*receive_cb)(<span class="keywordtype">void</span> *); </div><div class="line"><a name="l00300"></a><span class="lineno"><a class="line" href="structec__master.html#af8863ff09c783ae1322beb9609b23ec0">  300</a></span>&#160;    <span class="keywordtype">void</span> *<a class="code" href="structec__master.html#af8863ff09c783ae1322beb9609b23ec0">cb_data</a>; </div><div class="line"><a name="l00301"></a><span class="lineno"><a class="line" href="structec__master.html#a92e6bc0028daf31111f66b11a6bfd959">  301</a></span>&#160;    void (*app_send_cb)(<span class="keywordtype">void</span> *); </div><div class="line"><a name="l00303"></a><span class="lineno"><a class="line" href="structec__master.html#a769c6018142318d7a4e94412bb75583a">  303</a></span>&#160;    void (*app_receive_cb)(<span class="keywordtype">void</span> *); </div><div class="line"><a name="l00305"></a><span class="lineno"><a class="line" href="structec__master.html#a6ffa04311b054c877c9c956b00ae19d3">  305</a></span>&#160;    <span class="keywordtype">void</span> *<a class="code" href="structec__master.html#a6ffa04311b054c877c9c956b00ae19d3">app_cb_data</a>; </div><div class="line"><a name="l00307"></a><span class="lineno"><a class="line" href="structec__master.html#a45e433c08e51a354f728d1b9a3d0fda5">  307</a></span>&#160;    <span class="keyword">struct </span>list_head sii_requests; </div><div class="line"><a name="l00309"></a><span class="lineno"><a class="line" href="structec__master.html#a40be6dcab1a714b076a435f58710ed15">  309</a></span>&#160;    wait_queue_head_t <a class="code" href="structec__master.html#a40be6dcab1a714b076a435f58710ed15">request_queue</a>; </div><div class="line"><a name="l00311"></a><span class="lineno">  311</span>&#160;};</div><div class="line"><a name="l00312"></a><span class="lineno">  312</span>&#160;</div><div class="line"><a name="l00313"></a><span class="lineno">  313</span>&#160;<span class="comment">/*****************************************************************************/</span></div><div class="line"><a name="l00314"></a><span class="lineno">  314</span>&#160;</div><div class="line"><a name="l00315"></a><span class="lineno">  315</span>&#160;<span class="comment">// static funtions</span></div><div class="line"><a name="l00316"></a><span class="lineno">  316</span>&#160;<span class="keywordtype">void</span> <a class="code" href="master_8h.html#a1042d68ede5c0f866dc185b89167b31f">ec_master_init_static</a>(<span class="keywordtype">void</span>);</div><div class="line"><a name="l00317"></a><span class="lineno">  317</span>&#160;</div><div class="line"><a name="l00318"></a><span class="lineno">  318</span>&#160;<span class="comment">// master creation/deletion</span></div><div class="line"><a name="l00319"></a><span class="lineno">  319</span>&#160;<span class="keywordtype">int</span> <a class="code" href="master_8h.html#a7ac0da6ba7a9d07560cf444aa3591b9a">ec_master_init</a>(<a class="code" href="structec__master.html">ec_master_t</a> *, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>, <span class="keyword">const</span> uint8_t *,</div><div class="line"><a name="l00320"></a><span class="lineno">  320</span>&#160;        <span class="keyword">const</span> uint8_t *, dev_t, <span class="keyword">struct</span> <span class="keyword">class</span> *, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>);</div><div class="line"><a name="l00321"></a><span class="lineno">  321</span>&#160;<span class="keywordtype">void</span> <a class="code" href="master_8h.html#a5ea8e56915a4c0507a1bf69ed7ecee13">ec_master_clear</a>(<a class="code" href="structec__master.html">ec_master_t</a> *);</div><div class="line"><a name="l00322"></a><span class="lineno">  322</span>&#160;</div><div class="line"><a name="l00325"></a><span class="lineno">  325</span>&#160;<span class="preprocessor">#if EC_MAX_NUM_DEVICES &gt; 1</span></div><div class="line"><a name="l00326"></a><span class="lineno">  326</span>&#160;<span class="preprocessor">#define ec_master_num_devices(MASTER) ((MASTER)-&gt;num_devices)</span></div><div class="line"><a name="l00327"></a><span class="lineno">  327</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l00328"></a><span class="lineno"><a class="line" href="master_8h.html#a27e6deff35543c304e8a191c64f35cf3">  328</a></span>&#160;<span class="preprocessor">#define ec_master_num_devices(MASTER) 1</span></div><div class="line"><a name="l00329"></a><span class="lineno">  329</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00330"></a><span class="lineno">  330</span>&#160;</div><div class="line"><a name="l00331"></a><span class="lineno">  331</span>&#160;<span class="comment">// phase transitions</span></div><div class="line"><a name="l00332"></a><span class="lineno">  332</span>&#160;<span class="keywordtype">int</span> <a class="code" href="master_8h.html#a510fd2e57ffec9153acd1fa5e07429d9">ec_master_enter_idle_phase</a>(<a class="code" href="structec__master.html">ec_master_t</a> *);</div><div class="line"><a name="l00333"></a><span class="lineno">  333</span>&#160;<span class="keywordtype">void</span> <a class="code" href="master_8h.html#a172a333dbe2567d1a3adeb69f1fd672a">ec_master_leave_idle_phase</a>(<a class="code" href="structec__master.html">ec_master_t</a> *);</div><div class="line"><a name="l00334"></a><span class="lineno">  334</span>&#160;<span class="keywordtype">int</span> <a class="code" href="master_8h.html#a0265b8dfaa214b79b789eaf2808b836e">ec_master_enter_operation_phase</a>(<a class="code" href="structec__master.html">ec_master_t</a> *);</div><div class="line"><a name="l00335"></a><span class="lineno">  335</span>&#160;<span class="keywordtype">void</span> <a class="code" href="master_8h.html#a0a85447c25b0d0629447d224aa7ed08d">ec_master_leave_operation_phase</a>(<a class="code" href="structec__master.html">ec_master_t</a> *);</div><div class="line"><a name="l00336"></a><span class="lineno">  336</span>&#160;</div><div class="line"><a name="l00337"></a><span class="lineno">  337</span>&#160;<span class="preprocessor">#ifdef EC_EOE</span></div><div class="line"><a name="l00338"></a><span class="lineno">  338</span>&#160;<span class="comment">// EoE</span></div><div class="line"><a name="l00339"></a><span class="lineno">  339</span>&#160;<span class="keywordtype">void</span> <a class="code" href="master_8h.html#aeb3fd5f8f48d5b0688bf5374d1db8a2a">ec_master_eoe_start</a>(<a class="code" href="structec__master.html">ec_master_t</a> *);</div><div class="line"><a name="l00340"></a><span class="lineno">  340</span>&#160;<span class="keywordtype">void</span> <a class="code" href="master_8h.html#ae91a3cc9f33b29f2e0f479f602e979b7">ec_master_eoe_stop</a>(<a class="code" href="structec__master.html">ec_master_t</a> *);</div><div class="line"><a name="l00341"></a><span class="lineno">  341</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00342"></a><span class="lineno">  342</span>&#160;</div><div class="line"><a name="l00343"></a><span class="lineno">  343</span>&#160;<span class="comment">// datagram IO</span></div><div class="line"><a name="l00344"></a><span class="lineno">  344</span>&#160;<span class="keywordtype">void</span> <a class="code" href="master_8h.html#a0f9f566f43be617c60cc7be343582402">ec_master_receive_datagrams</a>(<a class="code" href="structec__master.html">ec_master_t</a> *, <span class="keyword">const</span> uint8_t *, <span class="keywordtype">size_t</span>);</div><div class="line"><a name="l00345"></a><span class="lineno">  345</span>&#160;<span class="keywordtype">void</span> <a class="code" href="master_8h.html#a6d0214fc51a4b399f22b6317f2c239dd">ec_master_queue_datagram</a>(<a class="code" href="structec__master.html">ec_master_t</a> *, <a class="code" href="structec__datagram__t.html">ec_datagram_t</a> *);</div><div class="line"><a name="l00346"></a><span class="lineno">  346</span>&#160;<span class="keywordtype">void</span> <a class="code" href="master_8h.html#aca56ba0e591545222908f5c2b148fd5f">ec_master_queue_datagram_ext</a>(<a class="code" href="structec__master.html">ec_master_t</a> *, <a class="code" href="structec__datagram__t.html">ec_datagram_t</a> *);</div><div class="line"><a name="l00347"></a><span class="lineno">  347</span>&#160;</div><div class="line"><a name="l00348"></a><span class="lineno">  348</span>&#160;<span class="comment">// misc.</span></div><div class="line"><a name="l00349"></a><span class="lineno">  349</span>&#160;<span class="keywordtype">void</span> <a class="code" href="master_8h.html#a005dd21f87606cec96e3803c2848d6e1">ec_master_set_send_interval</a>(<a class="code" href="structec__master.html">ec_master_t</a> *, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>);</div><div class="line"><a name="l00350"></a><span class="lineno">  350</span>&#160;<span class="keywordtype">void</span> <a class="code" href="master_8h.html#ad6aca8fc11ed9b16a69449c47d432dba">ec_master_attach_slave_configs</a>(<a class="code" href="structec__master.html">ec_master_t</a> *);</div><div class="line"><a name="l00351"></a><span class="lineno">  351</span>&#160;<a class="code" href="structec__slave.html">ec_slave_t</a> *<a class="code" href="master_8h.html#aa2ad73c977ff2605e060085649d97d1a">ec_master_find_slave</a>(<a class="code" href="structec__master.html">ec_master_t</a> *, uint16_t, uint16_t);</div><div class="line"><a name="l00352"></a><span class="lineno">  352</span>&#160;<span class="keyword">const</span> <a class="code" href="structec__slave.html">ec_slave_t</a> *<a class="code" href="master_8h.html#a7fd24724221dacd3f2a9059b8992cb0b">ec_master_find_slave_const</a>(<span class="keyword">const</span> <a class="code" href="structec__master.html">ec_master_t</a> *, uint16_t,</div><div class="line"><a name="l00353"></a><span class="lineno">  353</span>&#160;        uint16_t);</div><div class="line"><a name="l00354"></a><span class="lineno">  354</span>&#160;<span class="keywordtype">void</span> <a class="code" href="master_8h.html#ab19fbec7369ba9928d822a025b1b62ef">ec_master_output_stats</a>(<a class="code" href="structec__master.html">ec_master_t</a> *);</div><div class="line"><a name="l00355"></a><span class="lineno">  355</span>&#160;<span class="preprocessor">#ifdef EC_EOE</span></div><div class="line"><a name="l00356"></a><span class="lineno">  356</span>&#160;<span class="keywordtype">void</span> <a class="code" href="master_8h.html#a35f916015e57779aa89b73928568ec7c">ec_master_clear_eoe_handlers</a>(<a class="code" href="structec__master.html">ec_master_t</a> *);</div><div class="line"><a name="l00357"></a><span class="lineno">  357</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00358"></a><span class="lineno">  358</span>&#160;<span class="keywordtype">void</span> <a class="code" href="master_8h.html#a96163ebaa24e3ef19e4879656eac0c6f">ec_master_clear_slaves</a>(<a class="code" href="structec__master.html">ec_master_t</a> *);</div><div class="line"><a name="l00359"></a><span class="lineno">  359</span>&#160;</div><div class="line"><a name="l00360"></a><span class="lineno">  360</span>&#160;<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="master_8h.html#a2471b97da009904ca66188f0360d17e3">ec_master_config_count</a>(<span class="keyword">const</span> <a class="code" href="structec__master.html">ec_master_t</a> *);</div><div class="line"><a name="l00361"></a><span class="lineno">  361</span>&#160;<a class="code" href="structec__slave__config.html">ec_slave_config_t</a> *<a class="code" href="master_8h.html#a7f71af78e1b705fb6fadf9c5f1d574fb">ec_master_get_config</a>(</div><div class="line"><a name="l00362"></a><span class="lineno">  362</span>&#160;        <span class="keyword">const</span> <a class="code" href="structec__master.html">ec_master_t</a> *, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>);</div><div class="line"><a name="l00363"></a><span class="lineno">  363</span>&#160;<span class="keyword">const</span> <a class="code" href="structec__slave__config.html">ec_slave_config_t</a> *<a class="code" href="master_8h.html#a260fc8f122ebaf627fd575e668efdfe5">ec_master_get_config_const</a>(</div><div class="line"><a name="l00364"></a><span class="lineno">  364</span>&#160;        <span class="keyword">const</span> <a class="code" href="structec__master.html">ec_master_t</a> *, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>);</div><div class="line"><a name="l00365"></a><span class="lineno">  365</span>&#160;<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="master_8h.html#a0ece9b88cc82a2b94ee1160561b0d6cf">ec_master_domain_count</a>(<span class="keyword">const</span> <a class="code" href="structec__master.html">ec_master_t</a> *);</div><div class="line"><a name="l00366"></a><span class="lineno">  366</span>&#160;<a class="code" href="structec__domain.html">ec_domain_t</a> *<a class="code" href="master_8h.html#a8c5d1278cdd711758cc70d006d4f6796">ec_master_find_domain</a>(<a class="code" href="structec__master.html">ec_master_t</a> *, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>);</div><div class="line"><a name="l00367"></a><span class="lineno">  367</span>&#160;<span class="keyword">const</span> <a class="code" href="structec__domain.html">ec_domain_t</a> *<a class="code" href="master_8h.html#af3cf92c146791d65e9f50bab3fd52df9">ec_master_find_domain_const</a>(<span class="keyword">const</span> <a class="code" href="structec__master.html">ec_master_t</a> *,</div><div class="line"><a name="l00368"></a><span class="lineno">  368</span>&#160;        <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>);</div><div class="line"><a name="l00369"></a><span class="lineno">  369</span>&#160;<span class="preprocessor">#ifdef EC_EOE</span></div><div class="line"><a name="l00370"></a><span class="lineno">  370</span>&#160;uint16_t <a class="code" href="master_8h.html#a46e4e479e848ee7d2b241b6bf59e53f7">ec_master_eoe_handler_count</a>(<span class="keyword">const</span> <a class="code" href="structec__master.html">ec_master_t</a> *);</div><div class="line"><a name="l00371"></a><span class="lineno">  371</span>&#160;<span class="keyword">const</span> <a class="code" href="structec__eoe.html">ec_eoe_t</a> *<a class="code" href="master_8h.html#ae20b715da9a11ca5743fd794a9cb1714">ec_master_get_eoe_handler_const</a>(<span class="keyword">const</span> <a class="code" href="structec__master.html">ec_master_t</a> *, uint16_t);</div><div class="line"><a name="l00372"></a><span class="lineno">  372</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00373"></a><span class="lineno">  373</span>&#160;</div><div class="line"><a name="l00374"></a><span class="lineno">  374</span>&#160;<span class="keywordtype">int</span> <a class="code" href="master_8h.html#a329e1df698c675e5764eb52321cfb337">ec_master_debug_level</a>(<a class="code" href="structec__master.html">ec_master_t</a> *, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span>);</div><div class="line"><a name="l00375"></a><span class="lineno">  375</span>&#160;</div><div class="line"><a name="l00376"></a><span class="lineno">  376</span>&#160;<a class="code" href="structec__domain.html">ec_domain_t</a> *<a class="code" href="master_8h.html#af5944c23eda9f9fb63e3eb9772e6e1ba">ecrt_master_create_domain_err</a>(<a class="code" href="structec__master.html">ec_master_t</a> *);</div><div class="line"><a name="l00377"></a><span class="lineno">  377</span>&#160;<a class="code" href="structec__slave__config.html">ec_slave_config_t</a> *<a class="code" href="master_8h.html#a7c0b63cd61c5a8189f4fbf1469a42fc5">ecrt_master_slave_config_err</a>(<a class="code" href="structec__master.html">ec_master_t</a> *, uint16_t,</div><div class="line"><a name="l00378"></a><span class="lineno">  378</span>&#160;        uint16_t, uint32_t, uint32_t);</div><div class="line"><a name="l00379"></a><span class="lineno">  379</span>&#160;</div><div class="line"><a name="l00380"></a><span class="lineno">  380</span>&#160;<span class="keywordtype">void</span> <a class="code" href="master_8h.html#ae45d9efc15219b27e5559e541bf0e3a3">ec_master_calc_dc</a>(<a class="code" href="structec__master.html">ec_master_t</a> *);</div><div class="line"><a name="l00381"></a><span class="lineno">  381</span>&#160;<span class="keywordtype">void</span> <a class="code" href="master_8h.html#ac51be86291ae6211a441dbcdce28a308">ec_master_request_op</a>(<a class="code" href="structec__master.html">ec_master_t</a> *);</div><div class="line"><a name="l00382"></a><span class="lineno">  382</span>&#160;</div><div class="line"><a name="l00383"></a><span class="lineno">  383</span>&#160;<span class="keywordtype">void</span> <a class="code" href="master_8h.html#aea63a38b5a1b38f44f82c8548b1eb317">ec_master_internal_send_cb</a>(<span class="keywordtype">void</span> *);</div><div class="line"><a name="l00384"></a><span class="lineno">  384</span>&#160;<span class="keywordtype">void</span> <a class="code" href="master_8h.html#ae9fd1de8d2addfe0a8ee3e42b3c33c13">ec_master_internal_receive_cb</a>(<span class="keywordtype">void</span> *);</div><div class="line"><a name="l00385"></a><span class="lineno">  385</span>&#160;</div><div class="line"><a name="l00386"></a><span class="lineno">  386</span>&#160;<span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> <a class="code" href="master_8h.html#a7f01585ce8b405b3956eb89564968b3d">rate_intervals</a>[<a class="code" href="globals_8h.html#a00b477d166c2d09b9fea5d43c0c1cd48">EC_RATE_COUNT</a>]; <span class="comment">// see master.c</span></div><div class="line"><a name="l00387"></a><span class="lineno">  387</span>&#160;</div><div class="line"><a name="l00388"></a><span class="lineno">  388</span>&#160;<span class="comment">/*****************************************************************************/</span></div><div class="line"><a name="l00389"></a><span class="lineno">  389</span>&#160;</div><div class="line"><a name="l00390"></a><span class="lineno">  390</span>&#160;<span class="preprocessor">#endif</span></div><div class="ttc" id="structec__master_html_a196088421f83927659e8c492f0432374"><div class="ttname"><a href="structec__master.html#a196088421f83927659e8c492f0432374">ec_master::injection_seq_fsm</a></div><div class="ttdeci">unsigned int injection_seq_fsm</div><div class="ttdoc">Datagram injection sequence number for the FSM side. </div><div class="ttdef"><b>Definition:</b> <a href="master_8h_source.html#l00226">master.h:226</a></div></div>
<div class="ttc" id="structec__stats__t_html"><div class="ttname"><a href="structec__stats__t.html">ec_stats_t</a></div><div class="ttdoc">Cyclic statistics. </div><div class="ttdef"><b>Definition:</b> <a href="master_8h_source.html#l00143">master.h:143</a></div></div>
<div class="ttc" id="master_8h_html_a96163ebaa24e3ef19e4879656eac0c6f"><div class="ttname"><a href="master_8h.html#a96163ebaa24e3ef19e4879656eac0c6f">ec_master_clear_slaves</a></div><div class="ttdeci">void ec_master_clear_slaves(ec_master_t *)</div><div class="ttdoc">Clear all slaves. </div><div class="ttdef"><b>Definition:</b> <a href="master_8c_source.html#l00463">master.c:463</a></div></div>
<div class="ttc" id="structec__master_html_ace80d85886a06d3608f853a7b37fb8c9"><div class="ttname"><a href="structec__master.html#ace80d85886a06d3608f853a7b37fb8c9">ec_master::reserved</a></div><div class="ttdeci">unsigned int reserved</div><div class="ttdoc">True, if the master is in use. </div><div class="ttdef"><b>Definition:</b> <a href="master_8h_source.html#l00196">master.h:196</a></div></div>
<div class="ttc" id="master_8h_html_ae91a3cc9f33b29f2e0f479f602e979b7"><div class="ttname"><a href="master_8h.html#ae91a3cc9f33b29f2e0f479f602e979b7">ec_master_eoe_stop</a></div><div class="ttdeci">void ec_master_eoe_stop(ec_master_t *)</div><div class="ttdoc">Stops the Ethernet over EtherCAT processing. </div><div class="ttdef"><b>Definition:</b> <a href="master_8c_source.html#l01672">master.c:1672</a></div></div>
<div class="ttc" id="master_8h_html_ae9fd1de8d2addfe0a8ee3e42b3c33c13"><div class="ttname"><a href="master_8h.html#ae9fd1de8d2addfe0a8ee3e42b3c33c13">ec_master_internal_receive_cb</a></div><div class="ttdeci">void ec_master_internal_receive_cb(void *)</div><div class="ttdoc">Internal receiving callback. </div><div class="ttdef"><b>Definition:</b> <a href="master_8c_source.html#l00548">master.c:548</a></div></div>
<div class="ttc" id="structec__master_html_a917c398a16d659c77249f4c77fde6dad"><div class="ttname"><a href="structec__master.html#a917c398a16d659c77249f4c77fde6dad">ec_master::fsm_exec_count</a></div><div class="ttdeci">unsigned int fsm_exec_count</div><div class="ttdoc">Number of entries in execution list. </div><div class="ttdef"><b>Definition:</b> <a href="master_8h_source.html#l00284">master.h:284</a></div></div>
<div class="ttc" id="structec__device__stats__t_html_a9cb31cea1af324f2a46ece82690027c7"><div class="ttname"><a href="structec__device__stats__t.html#a9cb31cea1af324f2a46ece82690027c7">ec_device_stats_t::last_loss</a></div><div class="ttdeci">u64 last_loss</div><div class="ttdoc">Tx/Rx difference of last statistics cycle. </div><div class="ttdef"><b>Definition:</b> <a href="master_8h_source.html#l00166">master.h:166</a></div></div>
<div class="ttc" id="structec__device__stats__t_html_a712dc5c0b9652b59fe8dfda4cd5cb0fe"><div class="ttname"><a href="structec__device__stats__t.html#a712dc5c0b9652b59fe8dfda4cd5cb0fe">ec_device_stats_t::tx_count</a></div><div class="ttdeci">u64 tx_count</div><div class="ttdoc">Number of frames sent. </div><div class="ttdef"><b>Definition:</b> <a href="master_8h_source.html#l00156">master.h:156</a></div></div>
<div class="ttc" id="master_8h_html_af5944c23eda9f9fb63e3eb9772e6e1ba"><div class="ttname"><a href="master_8h.html#af5944c23eda9f9fb63e3eb9772e6e1ba">ecrt_master_create_domain_err</a></div><div class="ttdeci">ec_domain_t * ecrt_master_create_domain_err(ec_master_t *)</div><div class="ttdoc">Same as ecrt_master_create_domain(), but with ERR_PTR() return value. </div><div class="ttdef"><b>Definition:</b> <a href="master_8c_source.html#l02217">master.c:2217</a></div></div>
<div class="ttc" id="structec__master_html_a76d60bf657e362358ef24cb56e12771a"><div class="ttname"><a href="structec__master.html#a76d60bf657e362358ef24cb56e12771a">ec_master::app_start_time</a></div><div class="ttdeci">u64 app_start_time</div><div class="ttdoc">Application start time. </div><div class="ttdef"><b>Definition:</b> <a href="master_8h_source.html#l00239">master.h:239</a></div></div>
<div class="ttc" id="structec__fsm__master_html"><div class="ttname"><a href="structec__fsm__master.html">ec_fsm_master</a></div><div class="ttdoc">Finite state machine of an EtherCAT master. </div><div class="ttdef"><b>Definition:</b> <a href="fsm__master_8h_source.html#l00068">fsm_master.h:68</a></div></div>
<div class="ttc" id="master_8h_html_ae20b715da9a11ca5743fd794a9cb1714"><div class="ttname"><a href="master_8h.html#ae20b715da9a11ca5743fd794a9cb1714">ec_master_get_eoe_handler_const</a></div><div class="ttdeci">const ec_eoe_t * ec_master_get_eoe_handler_const(const ec_master_t *, uint16_t)</div><div class="ttdoc">Get an EoE handler via its position in the list. </div><div class="ttdef"><b>Definition:</b> <a href="master_8c_source.html#l01974">master.c:1974</a></div></div>
<div class="ttc" id="structec__rtdm__dev_html"><div class="ttname"><a href="structec__rtdm__dev.html">ec_rtdm_dev</a></div><div class="ttdoc">EtherCAT RTDM device. </div><div class="ttdef"><b>Definition:</b> <a href="rtdm_8h_source.html#l00044">rtdm.h:44</a></div></div>
<div class="ttc" id="globals_8h_html_a00b477d166c2d09b9fea5d43c0c1cd48"><div class="ttname"><a href="globals_8h.html#a00b477d166c2d09b9fea5d43c0c1cd48">EC_RATE_COUNT</a></div><div class="ttdeci">#define EC_RATE_COUNT</div><div class="ttdoc">Number of statistic rate intervals to maintain. </div><div class="ttdef"><b>Definition:</b> <a href="globals_8h_source.html#l00072">globals.h:72</a></div></div>
<div class="ttc" id="structec__master_html_ab80e6b1c25a8818e7959aedcbe99e8aa"><div class="ttname"><a href="structec__master.html#ab80e6b1c25a8818e7959aedcbe99e8aa">ec_master::sync_mon_datagram</a></div><div class="ttdeci">ec_datagram_t sync_mon_datagram</div><div class="ttdoc">Datagram used for DC synchronisation monitoring. </div><div class="ttdef"><b>Definition:</b> <a href="master_8h_source.html#l00245">master.h:245</a></div></div>
<div class="ttc" id="master_8h_html_a7fd24724221dacd3f2a9059b8992cb0b"><div class="ttname"><a href="master_8h.html#a7fd24724221dacd3f2a9059b8992cb0b">ec_master_find_slave_const</a></div><div class="ttdeci">const ec_slave_t * ec_master_find_slave_const(const ec_master_t *, uint16_t, uint16_t)</div><div class="ttdoc">Finds a slave in the bus, given the alias and position. </div><div class="ttdef"><b>Definition:</b> <a href="master_8c_source.html#l01807">master.c:1807</a></div></div>
<div class="ttc" id="master_8h_html_aebcf0998049ecde580a47832fb3b36f0aadf62d83c5d61ea4fda76f5676aeb0c4"><div class="ttname"><a href="master_8h.html#aebcf0998049ecde580a47832fb3b36f0aadf62d83c5d61ea4fda76f5676aeb0c4">EC_OPERATION</a></div><div class="ttdoc">Operation phase. </div><div class="ttdef"><b>Definition:</b> <a href="master_8h_source.html#l00135">master.h:135</a></div></div>
<div class="ttc" id="structec__master_html_ad09f588b08a5271c5c6a5e2b303f2f20"><div class="ttname"><a href="structec__master.html#ad09f588b08a5271c5c6a5e2b303f2f20">ec_master::allow_scan</a></div><div class="ttdeci">unsigned int allow_scan</div><div class="ttdoc">True, if slave scanning is allowed. </div><div class="ttdef"><b>Definition:</b> <a href="master_8h_source.html#l00252">master.h:252</a></div></div>
<div class="ttc" id="structec__master_html_a39b81f27a225b9b10daf88b1746d0d6d"><div class="ttname"><a href="structec__master.html#a39b81f27a225b9b10daf88b1746d0d6d">ec_master::max_queue_size</a></div><div class="ttdeci">size_t max_queue_size</div><div class="ttdoc">Maximum size of datagram queue. </div><div class="ttdef"><b>Definition:</b> <a href="master_8h_source.html#l00280">master.h:280</a></div></div>
<div class="ttc" id="master_8h_html_ac51be86291ae6211a441dbcdce28a308"><div class="ttname"><a href="master_8h.html#ac51be86291ae6211a441dbcdce28a308">ec_master_request_op</a></div><div class="ttdeci">void ec_master_request_op(ec_master_t *)</div><div class="ttdoc">Request OP state for configured slaves. </div><div class="ttdef"><b>Definition:</b> <a href="master_8c_source.html#l02183">master.c:2183</a></div></div>
<div class="ttc" id="structec__datagram__t_html"><div class="ttname"><a href="structec__datagram__t.html">ec_datagram_t</a></div><div class="ttdoc">EtherCAT datagram. </div><div class="ttdef"><b>Definition:</b> <a href="datagram_8h_source.html#l00087">datagram.h:87</a></div></div>
<div class="ttc" id="master_8h_html_a510fd2e57ffec9153acd1fa5e07429d9"><div class="ttname"><a href="master_8h.html#a510fd2e57ffec9153acd1fa5e07429d9">ec_master_enter_idle_phase</a></div><div class="ttdeci">int ec_master_enter_idle_phase(ec_master_t *)</div><div class="ttdoc">Transition function from ORPHANED to IDLE phase. </div><div class="ttdef"><b>Definition:</b> <a href="master_8c_source.html#l00620">master.c:620</a></div></div>
<div class="ttc" id="master_8h_html_a7f71af78e1b705fb6fadf9c5f1d574fb"><div class="ttname"><a href="master_8h.html#a7f71af78e1b705fb6fadf9c5f1d574fb">ec_master_get_config</a></div><div class="ttdeci">ec_slave_config_t * ec_master_get_config(const ec_master_t *, unsigned int)</div><div class="ttdoc">Get a slave configuration via its position in the list. </div><div class="ttdef"><b>Definition:</b> <a href="master_8c_source.html#l01856">master.c:1856</a></div></div>
<div class="ttc" id="structec__device__stats__t_html_afd23f1645bfbf7a505dc4e8b5ac5eca0"><div class="ttname"><a href="structec__device__stats__t.html#afd23f1645bfbf7a505dc4e8b5ac5eca0">ec_device_stats_t::jiffies</a></div><div class="ttdeci">unsigned long jiffies</div><div class="ttdoc">Jiffies of last statistic cycle. </div><div class="ttdef"><b>Definition:</b> <a href="master_8h_source.html#l00179">master.h:179</a></div></div>
<div class="ttc" id="master_8h_html_a7f01585ce8b405b3956eb89564968b3d"><div class="ttname"><a href="master_8h.html#a7f01585ce8b405b3956eb89564968b3d">rate_intervals</a></div><div class="ttdeci">const unsigned int rate_intervals[EC_RATE_COUNT]</div><div class="ttdoc">List of intervals for statistics [s]. </div><div class="ttdef"><b>Definition:</b> <a href="master_8c_source.html#l00087">master.c:87</a></div></div>
<div class="ttc" id="structec__device__stats__t_html_af7e4fc7bfa8d67523c5e4f49b3953280"><div class="ttname"><a href="structec__device__stats__t.html#af7e4fc7bfa8d67523c5e4f49b3953280">ec_device_stats_t::last_rx_count</a></div><div class="ttdeci">u64 last_rx_count</div><div class="ttdoc">Number of frames received of last statistics cycle. </div><div class="ttdef"><b>Definition:</b> <a href="master_8h_source.html#l00159">master.h:159</a></div></div>
<div class="ttc" id="structec__master_html_a40be6dcab1a714b076a435f58710ed15"><div class="ttname"><a href="structec__master.html#a40be6dcab1a714b076a435f58710ed15">ec_master::request_queue</a></div><div class="ttdeci">wait_queue_head_t request_queue</div><div class="ttdoc">Wait queue for external requests from user space. </div><div class="ttdef"><b>Definition:</b> <a href="master_8h_source.html#l00309">master.h:309</a></div></div>
<div class="ttc" id="fsm__master_8h_html"><div class="ttname"><a href="fsm__master_8h.html">fsm_master.h</a></div><div class="ttdoc">EtherCAT master state machine. </div></div>
<div class="ttc" id="master_8h_html_a7ac0da6ba7a9d07560cf444aa3591b9a"><div class="ttname"><a href="master_8h.html#a7ac0da6ba7a9d07560cf444aa3591b9a">ec_master_init</a></div><div class="ttdeci">int ec_master_init(ec_master_t *, unsigned int, const uint8_t *, const uint8_t *, dev_t, struct class *, unsigned int)</div><div class="ttdoc">Master constructor. </div><div class="ttdef"><b>Definition:</b> <a href="master_8c_source.html#l00129">master.c:129</a></div></div>
<div class="ttc" id="structec__master_html_af8863ff09c783ae1322beb9609b23ec0"><div class="ttname"><a href="structec__master.html#af8863ff09c783ae1322beb9609b23ec0">ec_master::cb_data</a></div><div class="ttdeci">void * cb_data</div><div class="ttdoc">Current callback data. </div><div class="ttdef"><b>Definition:</b> <a href="master_8h_source.html#l00300">master.h:300</a></div></div>
<div class="ttc" id="structec__master_html_a9e65179b1519a5c1e7ff229e428501d0"><div class="ttname"><a href="structec__master.html#a9e65179b1519a5c1e7ff229e428501d0">ec_master::fsm_slave</a></div><div class="ttdeci">ec_slave_t * fsm_slave</div><div class="ttdoc">Slave that is queried next for FSM exec. </div><div class="ttdef"><b>Definition:</b> <a href="master_8h_source.html#l00282">master.h:282</a></div></div>
<div class="ttc" id="structec__master_html_a5f4ea791c6e6c52f636b3888e70c9da3"><div class="ttname"><a href="structec__master.html#a5f4ea791c6e6c52f636b3888e70c9da3">ec_master::send_interval</a></div><div class="ttdeci">unsigned int send_interval</div><div class="ttdoc">Interval between two calls to ecrt_master_send(). </div><div class="ttdef"><b>Definition:</b> <a href="master_8h_source.html#l00278">master.h:278</a></div></div>
<div class="ttc" id="structec__slave_html"><div class="ttname"><a href="structec__slave.html">ec_slave</a></div><div class="ttdoc">EtherCAT slave. </div><div class="ttdef"><b>Definition:</b> <a href="slave_8h_source.html#l00176">slave.h:176</a></div></div>
<div class="ttc" id="structec__master_html_a78f6e9a626268ed4747495077e9e704d"><div class="ttname"><a href="structec__master.html#a78f6e9a626268ed4747495077e9e704d">ec_master::datagram_index</a></div><div class="ttdeci">uint8_t datagram_index</div><div class="ttdoc">Current datagram index. </div><div class="ttdef"><b>Definition:</b> <a href="master_8h_source.html#l00265">master.h:265</a></div></div>
<div class="ttc" id="structec__master_html_a06e3b89f4c10b690f95a9bdac24eb94a"><div class="ttname"><a href="structec__master.html#a06e3b89f4c10b690f95a9bdac24eb94a">ec_master::eoe_thread</a></div><div class="ttdeci">struct task_struct * eoe_thread</div><div class="ttdoc">EoE thread. </div><div class="ttdef"><b>Definition:</b> <a href="master_8h_source.html#l00292">master.h:292</a></div></div>
<div class="ttc" id="structec__stats__t_html_ace86973203e2ef1838f9345f9eb2d767"><div class="ttname"><a href="structec__stats__t.html#ace86973203e2ef1838f9345f9eb2d767">ec_stats_t::unmatched</a></div><div class="ttdeci">unsigned int unmatched</div><div class="ttdoc">unmatched datagrams (received, but not queued any longer) </div><div class="ttdef"><b>Definition:</b> <a href="master_8h_source.html#l00146">master.h:146</a></div></div>
<div class="ttc" id="structec__master_html_a7c216ddb4024fb15599e14d337b38cab"><div class="ttname"><a href="structec__master.html#a7c216ddb4024fb15599e14d337b38cab">ec_master::ext_ring_idx_fsm</a></div><div class="ttdeci">unsigned int ext_ring_idx_fsm</div><div class="ttdoc">Index in external datagram ring for FSM side. </div><div class="ttdef"><b>Definition:</b> <a href="master_8h_source.html#l00276">master.h:276</a></div></div>
<div class="ttc" id="ethernet_8h_html"><div class="ttname"><a href="ethernet_8h.html">ethernet.h</a></div><div class="ttdoc">Ethernet over EtherCAT (EoE) </div></div>
<div class="ttc" id="structec__master_html_a8109992ca98fdfc4d97610ec699fec31"><div class="ttname"><a href="structec__master.html#a8109992ca98fdfc4d97610ec699fec31">ec_master::device_stats</a></div><div class="ttdeci">ec_device_stats_t device_stats</div><div class="ttdoc">Device statistics. </div><div class="ttdef"><b>Definition:</b> <a href="master_8h_source.html#l00219">master.h:219</a></div></div>
<div class="ttc" id="module_8c_html_a93e568278eb7135eddee0827c5c7eb69"><div class="ttname"><a href="module_8c.html#a93e568278eb7135eddee0827c5c7eb69">macs</a></div><div class="ttdeci">static uint8_t macs[MAX_MASTERS][2][ETH_ALEN]</div><div class="ttdoc">MAC addresses. </div><div class="ttdef"><b>Definition:</b> <a href="module_8c_source.html#l00069">module.c:69</a></div></div>
<div class="ttc" id="structec__master_html_a2f17ac41646829e59c60426847a14425"><div class="ttname"><a href="structec__master.html#a2f17ac41646829e59c60426847a14425">ec_master::fsm_datagram</a></div><div class="ttdeci">ec_datagram_t fsm_datagram</div><div class="ttdoc">Datagram used for state machines. </div><div class="ttdef"><b>Definition:</b> <a href="master_8h_source.html#l00222">master.h:222</a></div></div>
<div class="ttc" id="structec__master_html_aeeac95bdfc711903f48710b31e8b78a2"><div class="ttname"><a href="structec__master.html#aeeac95bdfc711903f48710b31e8b78a2">ec_master::phase</a></div><div class="ttdeci">ec_master_phase_t phase</div><div class="ttdoc">Master phase. </div><div class="ttdef"><b>Definition:</b> <a href="master_8h_source.html#l00223">master.h:223</a></div></div>
<div class="ttc" id="structec__master_html_abc8bc52f09996b03c605c0c1d2e6327a"><div class="ttname"><a href="structec__master.html#abc8bc52f09996b03c605c0c1d2e6327a">ec_master::slaves</a></div><div class="ttdeci">ec_slave_t * slaves</div><div class="ttdoc">Array of slaves on the bus. </div><div class="ttdef"><b>Definition:</b> <a href="master_8h_source.html#l00231">master.h:231</a></div></div>
<div class="ttc" id="master_8h_html_a0ece9b88cc82a2b94ee1160561b0d6cf"><div class="ttname"><a href="master_8h.html#a0ece9b88cc82a2b94ee1160561b0d6cf">ec_master_domain_count</a></div><div class="ttdeci">unsigned int ec_master_domain_count(const ec_master_t *)</div><div class="ttdoc">Get the number of domains. </div><div class="ttdef"><b>Definition:</b> <a href="master_8c_source.html#l01886">master.c:1886</a></div></div>
<div class="ttc" id="structec__device_html"><div class="ttname"><a href="structec__device.html">ec_device</a></div><div class="ttdoc">EtherCAT device. </div><div class="ttdef"><b>Definition:</b> <a href="device_8h_source.html#l00081">device.h:81</a></div></div>
<div class="ttc" id="master_8h_html_ab19fbec7369ba9928d822a025b1b62ef"><div class="ttname"><a href="master_8h.html#ab19fbec7369ba9928d822a025b1b62ef">ec_master_output_stats</a></div><div class="ttdeci">void ec_master_output_stats(ec_master_t *)</div><div class="ttdoc">Output master statistics. </div><div class="ttdef"><b>Definition:</b> <a href="master_8c_source.html#l01235">master.c:1235</a></div></div>
<div class="ttc" id="master_8h_html_a8c5d1278cdd711758cc70d006d4f6796"><div class="ttname"><a href="master_8h.html#a8c5d1278cdd711758cc70d006d4f6796">ec_master_find_domain</a></div><div class="ttdeci">ec_domain_t * ec_master_find_domain(ec_master_t *, unsigned int)</div><div class="ttdoc">Get a domain via its position in the list. </div><div class="ttdef"><b>Definition:</b> <a href="master_8c_source.html#l01920">master.c:1920</a></div></div>
<div class="ttc" id="structec__stats__t_html_a955d4a4b543d39ef33e3be00b7035551"><div class="ttname"><a href="structec__stats__t.html#a955d4a4b543d39ef33e3be00b7035551">ec_stats_t::timeouts</a></div><div class="ttdeci">unsigned int timeouts</div><div class="ttdoc">datagram timeouts </div><div class="ttdef"><b>Definition:</b> <a href="master_8h_source.html#l00144">master.h:144</a></div></div>
<div class="ttc" id="structec__master_html_abdecf290f3f7f2af1b2a7bf0d9c7b08d"><div class="ttname"><a href="structec__master.html#abdecf290f3f7f2af1b2a7bf0d9c7b08d">ec_master::debug_level</a></div><div class="ttdeci">unsigned int debug_level</div><div class="ttdoc">Master debug level. </div><div class="ttdef"><b>Definition:</b> <a href="master_8h_source.html#l00286">master.h:286</a></div></div>
<div class="ttc" id="master_8h_html_aebcf0998049ecde580a47832fb3b36f0aa9cb1938a13b1bfc35b02646310efe8f"><div class="ttname"><a href="master_8h.html#aebcf0998049ecde580a47832fb3b36f0aa9cb1938a13b1bfc35b02646310efe8f">EC_ORPHANED</a></div><div class="ttdoc">Orphaned phase. </div><div class="ttdef"><b>Definition:</b> <a href="master_8h_source.html#l00131">master.h:131</a></div></div>
<div class="ttc" id="master_8h_html_aa2ad73c977ff2605e060085649d97d1a"><div class="ttname"><a href="master_8h.html#aa2ad73c977ff2605e060085649d97d1a">ec_master_find_slave</a></div><div class="ttdeci">ec_slave_t * ec_master_find_slave(ec_master_t *, uint16_t, uint16_t)</div><div class="ttdoc">Finds a slave in the bus, given the alias and position. </div><div class="ttdef"><b>Definition:</b> <a href="master_8c_source.html#l01791">master.c:1791</a></div></div>
<div class="ttc" id="structec__stats__t_html_a05d3aa920802468a437e8518d84b5b4c"><div class="ttname"><a href="structec__stats__t.html#a05d3aa920802468a437e8518d84b5b4c">ec_stats_t::corrupted</a></div><div class="ttdeci">unsigned int corrupted</div><div class="ttdoc">corrupted frames </div><div class="ttdef"><b>Definition:</b> <a href="master_8h_source.html#l00145">master.h:145</a></div></div>
<div class="ttc" id="structec__device__stats__t_html_ab7ad452fd25c6e0470249165d8b5757f"><div class="ttname"><a href="structec__device__stats__t.html#ab7ad452fd25c6e0470249165d8b5757f">ec_device_stats_t::last_tx_count</a></div><div class="ttdeci">u64 last_tx_count</div><div class="ttdoc">Number of frames sent of last statistics cycle. </div><div class="ttdef"><b>Definition:</b> <a href="master_8h_source.html#l00157">master.h:157</a></div></div>
<div class="ttc" id="structec__master_html_abde2d964e984e4874e200a025deb2d20"><div class="ttname"><a href="structec__master.html#abde2d964e984e4874e200a025deb2d20">ec_master::ext_ring_idx_rt</a></div><div class="ttdeci">unsigned int ext_ring_idx_rt</div><div class="ttdoc">Index in external datagram ring for RT side. </div><div class="ttdef"><b>Definition:</b> <a href="master_8h_source.html#l00274">master.h:274</a></div></div>
<div class="ttc" id="structec__master_html_a664524e036971936aa812b73c51dc88d"><div class="ttname"><a href="structec__master.html#a664524e036971936aa812b73c51dc88d">ec_master::slave_count</a></div><div class="ttdeci">unsigned int slave_count</div><div class="ttdoc">Number of slaves on the bus. </div><div class="ttdef"><b>Definition:</b> <a href="master_8h_source.html#l00232">master.h:232</a></div></div>
<div class="ttc" id="structec__master_html_a51de6aed4f6ef7b4d876083d778e7267"><div class="ttname"><a href="structec__master.html#a51de6aed4f6ef7b4d876083d778e7267">ec_master::scan_busy</a></div><div class="ttdeci">unsigned int scan_busy</div><div class="ttdoc">Current scan state. </div><div class="ttdef"><b>Definition:</b> <a href="master_8h_source.html#l00251">master.h:251</a></div></div>
<div class="ttc" id="master_8h_html_a5ea8e56915a4c0507a1bf69ed7ecee13"><div class="ttname"><a href="master_8h.html#a5ea8e56915a4c0507a1bf69ed7ecee13">ec_master_clear</a></div><div class="ttdeci">void ec_master_clear(ec_master_t *)</div><div class="ttdoc">Destructor. </div><div class="ttdef"><b>Definition:</b> <a href="master_8c_source.html#l00380">master.c:380</a></div></div>
<div class="ttc" id="master_8h_html_ae45d9efc15219b27e5559e541bf0e3a3"><div class="ttname"><a href="master_8h.html#ae45d9efc15219b27e5559e541bf0e3a3">ec_master_calc_dc</a></div><div class="ttdeci">void ec_master_calc_dc(ec_master_t *)</div><div class="ttdoc">Distributed-clocks calculations. </div><div class="ttdef"><b>Definition:</b> <a href="master_8c_source.html#l02166">master.c:2166</a></div></div>
<div class="ttc" id="structec__master_html_abca51c185472a028ee9a541f6c375d1b"><div class="ttname"><a href="structec__master.html#abca51c185472a028ee9a541f6c375d1b">ec_master::active</a></div><div class="ttdeci">unsigned int active</div><div class="ttdoc">Master has been activated. </div><div class="ttdef"><b>Definition:</b> <a href="master_8h_source.html#l00224">master.h:224</a></div></div>
<div class="ttc" id="structec__master_html_a4a38824373201b174f0ffa3141eca8a1"><div class="ttname"><a href="structec__master.html#a4a38824373201b174f0ffa3141eca8a1">ec_master::scan_queue</a></div><div class="ttdeci">wait_queue_head_t scan_queue</div><div class="ttdoc">Queue for processes that wait for slave scanning. </div><div class="ttdef"><b>Definition:</b> <a href="master_8h_source.html#l00255">master.h:255</a></div></div>
<div class="ttc" id="master_8h_html_a329e1df698c675e5764eb52321cfb337"><div class="ttname"><a href="master_8h.html#a329e1df698c675e5764eb52321cfb337">ec_master_debug_level</a></div><div class="ttdeci">int ec_master_debug_level(ec_master_t *, unsigned int)</div><div class="ttdoc">Set the debug level. </div><div class="ttdef"><b>Definition:</b> <a href="master_8c_source.html#l01999">master.c:1999</a></div></div>
<div class="ttc" id="structec__master_html_a34e475677b9513fba43fb615e1928fdc"><div class="ttname"><a href="structec__master.html#a34e475677b9513fba43fb615e1928fdc">ec_master::sync_datagram</a></div><div class="ttdeci">ec_datagram_t sync_datagram</div><div class="ttdoc">Datagram used for DC drift compensation. </div><div class="ttdef"><b>Definition:</b> <a href="master_8h_source.html#l00243">master.h:243</a></div></div>
<div class="ttc" id="structec__master_html_ac5b8f1b9b9bc4beb08c6be854490841e"><div class="ttname"><a href="structec__master.html#ac5b8f1b9b9bc4beb08c6be854490841e">ec_master::class_device</a></div><div class="ttdeci">struct device * class_device</div><div class="ttdoc">Master class device. </div><div class="ttdef"><b>Definition:</b> <a href="master_8h_source.html#l00200">master.h:200</a></div></div>
<div class="ttc" id="master_8h_html_aea63a38b5a1b38f44f82c8548b1eb317"><div class="ttname"><a href="master_8h.html#aea63a38b5a1b38f44f82c8548b1eb317">ec_master_internal_send_cb</a></div><div class="ttdeci">void ec_master_internal_send_cb(void *)</div><div class="ttdoc">Internal sending callback. </div><div class="ttdef"><b>Definition:</b> <a href="master_8c_source.html#l00534">master.c:534</a></div></div>
<div class="ttc" id="master_8h_html_a005dd21f87606cec96e3803c2848d6e1"><div class="ttname"><a href="master_8h.html#a005dd21f87606cec96e3803c2848d6e1">ec_master_set_send_interval</a></div><div class="ttdeci">void ec_master_set_send_interval(ec_master_t *, unsigned int)</div><div class="ttdoc">Sets the expected interval between calls to ecrt_master_send and calculates the maximum amount of dat...</div><div class="ttdef"><b>Definition:</b> <a href="master_8c_source.html#l00890">master.c:890</a></div></div>
<div class="ttc" id="structec__master_html_ac4017bf50536c4aef75cfbbc97cf5c1f"><div class="ttname"><a href="structec__master.html#ac4017bf50536c4aef75cfbbc97cf5c1f">ec_master::dc_ref_config</a></div><div class="ttdeci">ec_slave_config_t * dc_ref_config</div><div class="ttdoc">Application-selected DC reference clock slave config. </div><div class="ttdef"><b>Definition:</b> <a href="master_8h_source.html#l00247">master.h:247</a></div></div>
<div class="ttc" id="master_8h_html_a46e4e479e848ee7d2b241b6bf59e53f7"><div class="ttname"><a href="master_8h.html#a46e4e479e848ee7d2b241b6bf59e53f7">ec_master_eoe_handler_count</a></div><div class="ttdeci">uint16_t ec_master_eoe_handler_count(const ec_master_t *)</div><div class="ttdoc">Get the number of EoE handlers. </div><div class="ttdef"><b>Definition:</b> <a href="master_8c_source.html#l01952">master.c:1952</a></div></div>
<div class="ttc" id="structec__device__stats__t_html"><div class="ttname"><a href="structec__device__stats__t.html">ec_device_stats_t</a></div><div class="ttdoc">Device statistics. </div><div class="ttdef"><b>Definition:</b> <a href="master_8h_source.html#l00155">master.h:155</a></div></div>
<div class="ttc" id="structec__device__stats__t_html_af577e001b9fa7ca11696eb99e4dc1c94"><div class="ttname"><a href="structec__device__stats__t.html#af577e001b9fa7ca11696eb99e4dc1c94">ec_device_stats_t::last_rx_bytes</a></div><div class="ttdeci">u64 last_rx_bytes</div><div class="ttdoc">Number of bytes received of last statistics cycle. </div><div class="ttdef"><b>Definition:</b> <a href="master_8h_source.html#l00164">master.h:164</a></div></div>
<div class="ttc" id="structec__stats__t_html_a1b5236e09088fa71c8bdc73b4f9de70a"><div class="ttname"><a href="structec__stats__t.html#a1b5236e09088fa71c8bdc73b4f9de70a">ec_stats_t::output_jiffies</a></div><div class="ttdeci">unsigned long output_jiffies</div><div class="ttdoc">time of last output </div><div class="ttdef"><b>Definition:</b> <a href="master_8h_source.html#l00148">master.h:148</a></div></div>
<div class="ttc" id="structec__master_html_ac10793455069c82bd9c459a596f9a38f"><div class="ttname"><a href="structec__master.html#ac10793455069c82bd9c459a596f9a38f">ec_master::stats</a></div><div class="ttdeci">ec_stats_t stats</div><div class="ttdoc">Cyclic statistics. </div><div class="ttdef"><b>Definition:</b> <a href="master_8h_source.html#l00287">master.h:287</a></div></div>
<div class="ttc" id="master_8h_html_aebcf0998049ecde580a47832fb3b36f0a243c4f44013cdfedb1105cb13e6b1191"><div class="ttname"><a href="master_8h.html#aebcf0998049ecde580a47832fb3b36f0a243c4f44013cdfedb1105cb13e6b1191">EC_IDLE</a></div><div class="ttdoc">Idle phase. </div><div class="ttdef"><b>Definition:</b> <a href="master_8h_source.html#l00133">master.h:133</a></div></div>
<div class="ttc" id="master_8h_html_aca56ba0e591545222908f5c2b148fd5f"><div class="ttname"><a href="master_8h.html#aca56ba0e591545222908f5c2b148fd5f">ec_master_queue_datagram_ext</a></div><div class="ttdeci">void ec_master_queue_datagram_ext(ec_master_t *, ec_datagram_t *)</div><div class="ttdoc">Places a datagram in the non-application datagram queue. </div><div class="ttdef"><b>Definition:</b> <a href="master_8c_source.html#l00957">master.c:957</a></div></div>
<div class="ttc" id="master_8h_html_a0a85447c25b0d0629447d224aa7ed08d"><div class="ttname"><a href="master_8h.html#a0a85447c25b0d0629447d224aa7ed08d">ec_master_leave_operation_phase</a></div><div class="ttdeci">void ec_master_leave_operation_phase(ec_master_t *)</div><div class="ttdoc">Transition function from OPERATION to IDLE phase. </div><div class="ttdef"><b>Definition:</b> <a href="master_8c_source.html#l00759">master.c:759</a></div></div>
<div class="ttc" id="structec__device__stats__t_html_ac4bcb52ad4f765671ffe124f4019b370"><div class="ttname"><a href="structec__device__stats__t.html#ac4bcb52ad4f765671ffe124f4019b370">ec_device_stats_t::tx_bytes</a></div><div class="ttdeci">u64 tx_bytes</div><div class="ttdoc">Number of bytes sent. </div><div class="ttdef"><b>Definition:</b> <a href="master_8h_source.html#l00161">master.h:161</a></div></div>
<div class="ttc" id="structec__master_html_a6ffa04311b054c877c9c956b00ae19d3"><div class="ttname"><a href="structec__master.html#a6ffa04311b054c877c9c956b00ae19d3">ec_master::app_cb_data</a></div><div class="ttdeci">void * app_cb_data</div><div class="ttdoc">Application callback data. </div><div class="ttdef"><b>Definition:</b> <a href="master_8h_source.html#l00305">master.h:305</a></div></div>
<div class="ttc" id="master_8h_html_aeb3fd5f8f48d5b0688bf5374d1db8a2a"><div class="ttname"><a href="master_8h.html#aeb3fd5f8f48d5b0688bf5374d1db8a2a">ec_master_eoe_start</a></div><div class="ttdeci">void ec_master_eoe_start(ec_master_t *)</div><div class="ttdoc">Starts Ethernet over EtherCAT processing on demand. </div><div class="ttdef"><b>Definition:</b> <a href="master_8c_source.html#l01635">master.c:1635</a></div></div>
<div class="ttc" id="structec__master_html_aafac97e86bc13e578d3ff0030c8ce7eb"><div class="ttname"><a href="structec__master.html#aafac97e86bc13e578d3ff0030c8ce7eb">ec_master::has_app_time</a></div><div class="ttdeci">u8 has_app_time</div><div class="ttdoc">Application time is valid. </div><div class="ttdef"><b>Definition:</b> <a href="master_8h_source.html#l00240">master.h:240</a></div></div>
<div class="ttc" id="structec__master_html_ab23c49dc46246de0e9d0b6247d4773fc"><div class="ttname"><a href="structec__master.html#ab23c49dc46246de0e9d0b6247d4773fc">ec_master::config_queue</a></div><div class="ttdeci">wait_queue_head_t config_queue</div><div class="ttdoc">Queue for processes that wait for slave configuration. </div><div class="ttdef"><b>Definition:</b> <a href="master_8h_source.html#l00261">master.h:261</a></div></div>
<div class="ttc" id="master_8h_html_a82682f338d4c64728c4bc14543eb6b9e"><div class="ttname"><a href="master_8h.html#a82682f338d4c64728c4bc14543eb6b9e">EC_EXT_RING_SIZE</a></div><div class="ttdeci">#define EC_EXT_RING_SIZE</div><div class="ttdoc">Size of the external datagram ring. </div><div class="ttdef"><b>Definition:</b> <a href="master_8h_source.html#l00124">master.h:124</a></div></div>
<div class="ttc" id="domain_8h_html"><div class="ttname"><a href="domain_8h.html">domain.h</a></div><div class="ttdoc">EtherCAT domain structure. </div></div>
<div class="ttc" id="module_8c_html_adaf55d5f5a414db259c65bbad33c1d6a"><div class="ttname"><a href="module_8c.html#adaf55d5f5a414db259c65bbad33c1d6a">master_sem</a></div><div class="ttdeci">static struct semaphore master_sem</div><div class="ttdoc">Master semaphore. </div><div class="ttdef"><b>Definition:</b> <a href="module_8c_source.html#l00064">module.c:64</a></div></div>
<div class="ttc" id="master_8h_html_a2471b97da009904ca66188f0360d17e3"><div class="ttname"><a href="master_8h.html#a2471b97da009904ca66188f0360d17e3">ec_master_config_count</a></div><div class="ttdeci">unsigned int ec_master_config_count(const ec_master_t *)</div><div class="ttdoc">Get the number of slave configurations provided by the application. </div><div class="ttdef"><b>Definition:</b> <a href="master_8c_source.html#l01823">master.c:1823</a></div></div>
<div class="ttc" id="structec__master_html_a499bcb3d75277ce4415f6df3de21b7d0"><div class="ttname"><a href="structec__master.html#a499bcb3d75277ce4415f6df3de21b7d0">ec_master::app_time</a></div><div class="ttdeci">u64 app_time</div><div class="ttdoc">Time of the last ecrt_master_sync() call. </div><div class="ttdef"><b>Definition:</b> <a href="master_8h_source.html#l00238">master.h:238</a></div></div>
<div class="ttc" id="structec__master_html_a8cb95984916798bb54e829452d069f50"><div class="ttname"><a href="structec__master.html#a8cb95984916798bb54e829452d069f50">ec_master::ref_sync_datagram</a></div><div class="ttdeci">ec_datagram_t ref_sync_datagram</div><div class="ttdoc">Datagram used for synchronizing the reference clock to the master clock. </div><div class="ttdef"><b>Definition:</b> <a href="master_8h_source.html#l00241">master.h:241</a></div></div>
<div class="ttc" id="structec__device__stats__t_html_aca29f0a6107eab8e7438ea53078183af"><div class="ttname"><a href="structec__device__stats__t.html#aca29f0a6107eab8e7438ea53078183af">ec_device_stats_t::rx_count</a></div><div class="ttdeci">u64 rx_count</div><div class="ttdoc">Number of frames received. </div><div class="ttdef"><b>Definition:</b> <a href="master_8h_source.html#l00158">master.h:158</a></div></div>
<div class="ttc" id="master_8h_html_a172a333dbe2567d1a3adeb69f1fd672a"><div class="ttname"><a href="master_8h.html#a172a333dbe2567d1a3adeb69f1fd672a">ec_master_leave_idle_phase</a></div><div class="ttdeci">void ec_master_leave_idle_phase(ec_master_t *)</div><div class="ttdoc">Transition function from IDLE to ORPHANED phase. </div><div class="ttdef"><b>Definition:</b> <a href="master_8c_source.html#l00653">master.c:653</a></div></div>
<div class="ttc" id="master_8h_html_a7c0b63cd61c5a8189f4fbf1469a42fc5"><div class="ttname"><a href="master_8h.html#a7c0b63cd61c5a8189f4fbf1469a42fc5">ecrt_master_slave_config_err</a></div><div class="ttdeci">ec_slave_config_t * ecrt_master_slave_config_err(ec_master_t *, uint16_t, uint16_t, uint32_t, uint32_t)</div><div class="ttdoc">Same as ecrt_master_slave_config(), but with ERR_PTR() return value. </div><div class="ttdef"><b>Definition:</b> <a href="master_8c_source.html#l02519">master.c:2519</a></div></div>
<div class="ttc" id="structec__cdev__t_html"><div class="ttname"><a href="structec__cdev__t.html">ec_cdev_t</a></div><div class="ttdoc">EtherCAT master character device. </div><div class="ttdef"><b>Definition:</b> <a href="cdev_8h_source.html#l00049">cdev.h:49</a></div></div>
<div class="ttc" id="structec__slave__config_html"><div class="ttname"><a href="structec__slave__config.html">ec_slave_config</a></div><div class="ttdoc">EtherCAT slave configuration. </div><div class="ttdef"><b>Definition:</b> <a href="slave__config_8h_source.html#l00118">slave_config.h:118</a></div></div>
<div class="ttc" id="device_8h_html"><div class="ttname"><a href="device_8h.html">device.h</a></div><div class="ttdoc">EtherCAT device structure. </div></div>
<div class="ttc" id="master_8h_html_aebcf0998049ecde580a47832fb3b36f0"><div class="ttname"><a href="master_8h.html#aebcf0998049ecde580a47832fb3b36f0">ec_master_phase_t</a></div><div class="ttdeci">ec_master_phase_t</div><div class="ttdoc">EtherCAT master phase. </div><div class="ttdef"><b>Definition:</b> <a href="master_8h_source.html#l00130">master.h:130</a></div></div>
<div class="ttc" id="master_8h_html_ad6aca8fc11ed9b16a69449c47d432dba"><div class="ttname"><a href="master_8h.html#ad6aca8fc11ed9b16a69449c47d432dba">ec_master_attach_slave_configs</a></div><div class="ttdeci">void ec_master_attach_slave_configs(ec_master_t *)</div><div class="ttdoc">Attaches the slave configurations to the slaves. </div><div class="ttdef"><b>Definition:</b> <a href="master_8c_source.html#l01751">master.c:1751</a></div></div>
<div class="ttc" id="master_8h_html_a1042d68ede5c0f866dc185b89167b31f"><div class="ttname"><a href="master_8h.html#a1042d68ede5c0f866dc185b89167b31f">ec_master_init_static</a></div><div class="ttdeci">void ec_master_init_static(void)</div><div class="ttdoc">Static variables initializer. </div><div class="ttdef"><b>Definition:</b> <a href="master_8c_source.html#l00108">master.c:108</a></div></div>
<div class="ttc" id="structec__master_html_a78fe13519ced082c9a212711bec49ed3"><div class="ttname"><a href="structec__master.html#a78fe13519ced082c9a212711bec49ed3">ec_master::index</a></div><div class="ttdeci">unsigned int index</div><div class="ttdoc">Index. </div><div class="ttdef"><b>Definition:</b> <a href="master_8h_source.html#l00195">master.h:195</a></div></div>
<div class="ttc" id="master_8h_html_a35f916015e57779aa89b73928568ec7c"><div class="ttname"><a href="master_8h.html#a35f916015e57779aa89b73928568ec7c">ec_master_clear_eoe_handlers</a></div><div class="ttdeci">void ec_master_clear_eoe_handlers(ec_master_t *)</div><div class="ttdoc">Clear and free all EoE handlers. </div><div class="ttdef"><b>Definition:</b> <a href="master_8c_source.html#l00427">master.c:427</a></div></div>
<div class="ttc" id="structec__device__stats__t_html_ab4d135010f4b8200a252f02429bd4160"><div class="ttname"><a href="structec__device__stats__t.html#ab4d135010f4b8200a252f02429bd4160">ec_device_stats_t::last_tx_bytes</a></div><div class="ttdeci">u64 last_tx_bytes</div><div class="ttdoc">Number of bytes sent of last statistics cycle. </div><div class="ttdef"><b>Definition:</b> <a href="master_8h_source.html#l00162">master.h:162</a></div></div>
<div class="ttc" id="structec__eoe_html"><div class="ttname"><a href="structec__eoe.html">ec_eoe</a></div><div class="ttdoc">Ethernet over EtherCAT (EoE) handler. </div><div class="ttdef"><b>Definition:</b> <a href="ethernet_8h_source.html#l00076">ethernet.h:76</a></div></div>
<div class="ttc" id="structec__master_html_a49062aab725bb4953a8fb6ad0fcabd85"><div class="ttname"><a href="structec__master.html#a49062aab725bb4953a8fb6ad0fcabd85">ec_master::fsm</a></div><div class="ttdeci">ec_fsm_master_t fsm</div><div class="ttdoc">Master state machine. </div><div class="ttdef"><b>Definition:</b> <a href="master_8h_source.html#l00221">master.h:221</a></div></div>
<div class="ttc" id="structec__master_html_acbd6e49f052bce75f69d12ef93390e5b"><div class="ttname"><a href="structec__master.html#acbd6e49f052bce75f69d12ef93390e5b">ec_master::cdev</a></div><div class="ttdeci">ec_cdev_t cdev</div><div class="ttdoc">Master character device. </div><div class="ttdef"><b>Definition:</b> <a href="master_8h_source.html#l00198">master.h:198</a></div></div>
<div class="ttc" id="master_8h_html_af3cf92c146791d65e9f50bab3fd52df9"><div class="ttname"><a href="master_8h.html#af3cf92c146791d65e9f50bab3fd52df9">ec_master_find_domain_const</a></div><div class="ttdeci">const ec_domain_t * ec_master_find_domain_const(const ec_master_t *, unsigned int)</div><div class="ttdoc">Get a domain via its position in the list. </div><div class="ttdef"><b>Definition:</b> <a href="master_8c_source.html#l01935">master.c:1935</a></div></div>
<div class="ttc" id="structec__device__stats__t_html_a7aa4d7f1b8804dfd50d0b6caef15de9f"><div class="ttname"><a href="structec__device__stats__t.html#a7aa4d7f1b8804dfd50d0b6caef15de9f">ec_device_stats_t::rx_bytes</a></div><div class="ttdeci">u64 rx_bytes</div><div class="ttdoc">Number of bytes received. </div><div class="ttdef"><b>Definition:</b> <a href="master_8h_source.html#l00163">master.h:163</a></div></div>
<div class="ttc" id="master_8h_html_a260fc8f122ebaf627fd575e668efdfe5"><div class="ttname"><a href="master_8h.html#a260fc8f122ebaf627fd575e668efdfe5">ec_master_get_config_const</a></div><div class="ttdeci">const ec_slave_config_t * ec_master_get_config_const(const ec_master_t *, unsigned int)</div><div class="ttdoc">Get a slave configuration via its position in the list. </div><div class="ttdef"><b>Definition:</b> <a href="master_8c_source.html#l01871">master.c:1871</a></div></div>
<div class="ttc" id="structec__master_html_ad505951b836d6c8a92549be0a8506aa0"><div class="ttname"><a href="structec__master.html#ad505951b836d6c8a92549be0a8506aa0">ec_master::config_changed</a></div><div class="ttdeci">unsigned int config_changed</div><div class="ttdoc">The configuration changed. </div><div class="ttdef"><b>Definition:</b> <a href="master_8h_source.html#l00225">master.h:225</a></div></div>
<div class="ttc" id="structec__master_html"><div class="ttname"><a href="structec__master.html">ec_master</a></div><div class="ttdoc">EtherCAT master. </div><div class="ttdef"><b>Definition:</b> <a href="master_8h_source.html#l00194">master.h:194</a></div></div>
<div class="ttc" id="structec__master_html_aa2badb7a9897d61488b4f08e58eb510c"><div class="ttname"><a href="structec__master.html#aa2badb7a9897d61488b4f08e58eb510c">ec_master::injection_seq_rt</a></div><div class="ttdeci">unsigned int injection_seq_rt</div><div class="ttdoc">Datagram injection sequence number for the realtime side. </div><div class="ttdef"><b>Definition:</b> <a href="master_8h_source.html#l00228">master.h:228</a></div></div>
<div class="ttc" id="master_8h_html_a0f9f566f43be617c60cc7be343582402"><div class="ttname"><a href="master_8h.html#a0f9f566f43be617c60cc7be343582402">ec_master_receive_datagrams</a></div><div class="ttdeci">void ec_master_receive_datagrams(ec_master_t *, const uint8_t *, size_t)</div><div class="ttdoc">Processes a received frame. </div><div class="ttdef"><b>Definition:</b> <a href="master_8c_source.html#l01109">master.c:1109</a></div></div>
<div class="ttc" id="structec__master_html_a89d9f24a4ffd7e41597449038bb39edc"><div class="ttname"><a href="structec__master.html#a89d9f24a4ffd7e41597449038bb39edc">ec_master::config_busy</a></div><div class="ttdeci">unsigned int config_busy</div><div class="ttdoc">State of slave configuration. </div><div class="ttdef"><b>Definition:</b> <a href="master_8h_source.html#l00258">master.h:258</a></div></div>
<div class="ttc" id="cdev_8h_html"><div class="ttname"><a href="cdev_8h.html">cdev.h</a></div><div class="ttdoc">EtherCAT master character device. </div></div>
<div class="ttc" id="master_8h_html_a0265b8dfaa214b79b789eaf2808b836e"><div class="ttname"><a href="master_8h.html#a0265b8dfaa214b79b789eaf2808b836e">ec_master_enter_operation_phase</a></div><div class="ttdeci">int ec_master_enter_operation_phase(ec_master_t *)</div><div class="ttdoc">Transition function from IDLE to OPERATION phase. </div><div class="ttdef"><b>Definition:</b> <a href="master_8c_source.html#l00677">master.c:677</a></div></div>
<div class="ttc" id="structec__domain_html"><div class="ttname"><a href="structec__domain.html">ec_domain</a></div><div class="ttdoc">EtherCAT domain. </div><div class="ttdef"><b>Definition:</b> <a href="domain_8h_source.html#l00054">domain.h:54</a></div></div>
<div class="ttc" id="structec__master_html_a20064971533f5ff3e72933c7c19bad18"><div class="ttname"><a href="structec__master.html#a20064971533f5ff3e72933c7c19bad18">ec_master::thread</a></div><div class="ttdeci">struct task_struct * thread</div><div class="ttdoc">Master thread. </div><div class="ttdef"><b>Definition:</b> <a href="master_8h_source.html#l00289">master.h:289</a></div></div>
<div class="ttc" id="structec__master_html_a8bce8836632ebb3a467480e4ea80b897"><div class="ttname"><a href="structec__master.html#a8bce8836632ebb3a467480e4ea80b897">ec_master::dc_ref_clock</a></div><div class="ttdeci">ec_slave_t * dc_ref_clock</div><div class="ttdoc">DC reference clock slave. </div><div class="ttdef"><b>Definition:</b> <a href="master_8h_source.html#l00249">master.h:249</a></div></div>
<div class="ttc" id="rtdm_8h_html"><div class="ttname"><a href="rtdm_8h.html">rtdm.h</a></div><div class="ttdoc">RTDM interface. </div></div>
<div class="ttc" id="master_8h_html_a6d0214fc51a4b399f22b6317f2c239dd"><div class="ttname"><a href="master_8h.html#a6d0214fc51a4b399f22b6317f2c239dd">ec_master_queue_datagram</a></div><div class="ttdeci">void ec_master_queue_datagram(ec_master_t *, ec_datagram_t *)</div><div class="ttdoc">Places a datagram in the datagram queue. </div><div class="ttdef"><b>Definition:</b> <a href="master_8c_source.html#l00926">master.c:926</a></div></div>
</div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="navelem"><a class="el" href="dir_c1346cf4828efdd0d2baf0d391d01b77.html">master</a></li><li class="navelem"><a class="el" href="master_8h.html">master.h</a></li>
    <li class="footer">Generated by
    <a href="http://www.doxygen.org/index.html">
    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li>
  </ul>
</div>
</body>
</html>
